10000 Merge pull request #1962 from python-gitlab/feat/user-ssh-key · python-gitlab/python-gitlab@68bf5d8 · GitHub
[go: up one dir, main page]

Skip to content

Commit 68bf5d8

Browse files
authored
Merge pull request #1962 from python-gitlab/feat/user-ssh-key
feat(user): support getting user SSH key by id
2 parents 4d6f125 + 6f93c05 commit 68bf5d8

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

docs/gl_objects/users.rst

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,9 +299,13 @@ List SSH keys for a user::
299299

300300
Create an SSH key for a user::
301301

302-
k = user.keys.create({'title': 'my_key',
302+
key = user.keys.create({'title': 'my_key',
303303
'key': open('/home/me/.ssh/id_rsa.pub').read()})
304304

305+
Get an SSH key for a user by id::
306+
307+
key = user.keys.get(key_id)
308+
305309
Delete an SSH key for a user::
306310

307311
user.keys.delete(key_id)

gitlab/v4/objects/users.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,12 +429,15 @@ class UserKey(ObjectDeleteMixin, RESTObject):
429429
pass
430430

431431

432-
class UserKeyManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
432+
class UserKeyManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
433433
_path = "/users/{user_id}/keys"
434434
_obj_cls = UserKey
435435
_from_parent_attrs = {"user_id": "id"}
436436
_create_attrs = RequiredOptional(required=("title", "key"))
437437

438+
def get(self, id: Union[str, int], lazy: bool = False, **kwargs: Any) -> UserKey:
439+
return cast(UserKey, super().get(id=id, lazy=lazy, **kwargs))
440+
438441

439442
class UserIdentityProviderManager(DeleteMixin, RESTManager):
440443
"""Manager for user identities.

tests/functional/api/test_users.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ def test_user_ssh_keys(gl, user, SSH_KEY):
106106
key = user.keys.create({"title": "testkey", "key": SSH_KEY})
107107
assert len(user.keys.list()) == 1
108108

109+
get_key = user.keys.get(key.id)
110+
assert get_key.key == key.key
111+
109112
key.delete()
110113
assert len(user.keys.list()) == 0
111114

0 commit comments

Comments
 (0)
0