summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Wittig <max.wittig@siemens.com>2022-04-13 09:26:49 +0200
committerGitHub <noreply@github.com>2022-04-13 09:26:49 +0200
commit68bf5d82b4480c541281d7f5eaf46850b13916d4 (patch)
treea810b8e32569162b95dbac8def479467f5017a3d
parent4d6f1259a1806314830853f8917d1f5128479bc3 (diff)
parent6f93c0520f738950a7c67dbeca8d1ac8257e2661 (diff)
downloadgitlab-68bf5d82b4480c541281d7f5eaf46850b13916d4.tar.gz
Merge pull request #1962 from python-gitlab/feat/user-ssh-key
feat(user): support getting user SSH key by id
-rw-r--r--docs/gl_objects/users.rst6
-rw-r--r--gitlab/v4/objects/users.py5
-rw-r--r--tests/functional/api/test_users.py3
3 files changed, 12 insertions, 2 deletions
diff --git a/docs/gl_objects/users.rst b/docs/gl_objects/users.rst
index aa3a660..7a169dc 100644
--- a/docs/gl_objects/users.rst
+++ b/docs/gl_objects/users.rst
@@ -299,9 +299,13 @@ List SSH keys for a user::
Create an SSH key for a user::
- k = user.keys.create({'title': 'my_key',
+ key = user.keys.create({'title': 'my_key',
'key': open('/home/me/.ssh/id_rsa.pub').read()})
+Get an SSH key for a user by id::
+
+ key = user.keys.get(key_id)
+
Delete an SSH key for a user::
user.keys.delete(key_id)
diff --git a/gitlab/v4/objects/users.py b/gitlab/v4/objects/users.py
index b2de337..ddcee70 100644
--- a/gitlab/v4/objects/users.py
+++ b/gitlab/v4/objects/users.py
@@ -429,12 +429,15 @@ class UserKey(ObjectDeleteMixin, RESTObject):
pass
-class UserKeyManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
+class UserKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
_path = "/users/{user_id}/keys"
_obj_cls = UserKey
_from_parent_attrs = {"user_id": "id"}
_create_attrs = RequiredOptional(required=("title", "key"))
+ def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserKey:
+ return cast(UserKey, super().get(id=id, lazy=lazy, **kwargs))
+
class UserIdentityProviderManager(DeleteMixin, RESTManager):
"""Manager for user identities.
diff --git a/tests/functional/api/test_users.py b/tests/functional/api/test_users.py
index 9945aa6..0c58034 100644
--- a/tests/functional/api/test_users.py
+++ b/tests/functional/api/test_users.py
@@ -106,6 +106,9 @@ def test_user_ssh_keys(gl, user, SSH_KEY):
key = user.keys.create({"title": "testkey", "key": SSH_KEY})
assert len(user.keys.list()) == 1
+ get_key = user.keys.get(key.id)
+ assert get_key.key == key.key
+
key.delete()
assert len(user.keys.list()) == 0