diff options
author | Gauvain Pocentek <gauvain@pocentek.net> | 2017-11-10 17:35:34 +0100 |
---|---|---|
committer | Gauvain Pocentek <gauvain@pocentek.net> | 2017-11-10 17:35:34 +0100 |
commit | 8fec612157e4c15f587c11efc98e7e339dfcff28 (patch) | |
tree | b1b9452bfce982003324fca9fc92ecbc9c085770 | |
parent | 700e84f3ea1a8e0f99775d02cd1a832d05d3ec8d (diff) | |
download | gitlab-8fec612157e4c15f587c11efc98e7e339dfcff28.tar.gz |
Add support for impersonation tokens API
Closes #363
-rw-r--r-- | docs/gl_objects/users.py | 19 | ||||
-rw-r--r-- | docs/gl_objects/users.rst | 36 | ||||
-rw-r--r-- | gitlab/v4/objects.py | 13 | ||||
-rw-r--r-- | tools/python_test_v4.py | 13 |
4 files changed, 80 insertions, 1 deletions
diff --git a/docs/gl_objects/users.py b/docs/gl_objects/users.py index da516e6..e452217 100644 --- a/docs/gl_objects/users.py +++ b/docs/gl_objects/users.py @@ -115,3 +115,22 @@ attr.delete() # or user.customeattributes.delete(attr_key) # end ca delete + +# it list +i_t = user.impersonationtokens.list(state='active') +i_t = user.impersonationtokens.list(state='inactive') +# end it list + +# it get +i_t = user.impersonationtokens.get(i_t_id) +# end it get + +# it create +i_t = user.impersonationtokens.create({'name': 'token1', 'scopes': ['api']}) +# use the token to create a new gitlab connection +user_gl = gitlab.Gitlab(gitlab_url, private_token=i_t.token) +# end it create + +# it delete +i_t.delete() +# end it delete diff --git a/docs/gl_objects/users.rst b/docs/gl_objects/users.rst index 4e22491..19612dd 100644 --- a/docs/gl_objects/users.rst +++ b/docs/gl_objects/users.rst @@ -106,6 +106,42 @@ Delete a custom attribute for a user: :start-after: # ca list :end-before: # end ca list +User impersonation tokens +========================= + +References +---------- + +* v4 API: + + + :class:`gitlab.v4.objects.UserImpersonationToken` + + :class:`gitlab.v4.objects.UserImpersonationTokenManager` + + :attr:`gitlab.v4.objects.User.impersontaiontokens` + +List impersonation tokens for a user: + +.. literalinclude:: users.py + :start-after: # it list + :end-before: # end it list + +Get an impersonation token for a user: + +.. literalinclude:: users.py + :start-after: # it get + :end-before: # end it get + +Create and use an impersonation token for a user: + +.. literalinclude:: users.py + :start-after: # it create + :end-before: # end it create + +Revoke (delete) an impersonation token for a user: + +.. literalinclude:: users.py + :start-after: # it list + :end-before: # end it list + Current User ============ diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 9be0d05..de8ec07 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -175,6 +175,18 @@ class UserKeyManager(GetFromListMixin, CreateMixin, DeleteMixin, RESTManager): _create_attrs = (('title', 'key'), tuple()) +class UserImpersonationToken(ObjectDeleteMixin, RESTObject): + pass + + +class UserImpersonationTokenManager(NoUpdateMixin, RESTManager): + _path = '/users/%(user_id)s/impersonation_tokens' + _obj_cls = UserImpersonationToken + _from_parent_attrs = {'user_id': 'id'} + _create_attrs = (('name', 'scopes'), ('expires_at',)) + _list_filters = ('state',) + + class UserProject(RESTObject): pass @@ -198,6 +210,7 @@ class User(SaveMixin, ObjectDeleteMixin, RESTObject): ('customattributes', 'UserCustomAttributeManager'), ('emails', 'UserEmailManager'), ('gpgkeys', 'UserGPGKeyManager'), + ('impersonationtokens', 'UserImpersonationTokenManager'), ('keys', 'UserKeyManager'), ('projects', 'UserProjectManager'), ) diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py index fa83228..7d769f3 100644 --- a/tools/python_test_v4.py +++ b/tools/python_test_v4.py @@ -145,6 +145,17 @@ assert(len(new_user.customattributes.list()) == 1) attr.delete() assert(len(new_user.customattributes.list()) == 0) +# impersonation tokens +user_token = new_user.impersonationtokens.create( + {'name': 'token1', 'scopes': ['api', 'read_user']}) +l = new_user.impersonationtokens.list(state='active') +assert(len(l) == 1) +user_token.delete() +l = new_user.impersonationtokens.list(state='active') +assert(len(l) == 0) +l = new_user.impersonationtokens.list(state='inactive') +assert(len(l) == 1) + new_user.delete() foobar_user.delete() assert(len(gl.users.list()) == 3) @@ -485,7 +496,7 @@ except gitlab.GitlabMRClosedError: p_b = admin_project.protectedbranches.create({'name': '*-stable'}) assert(p_b.name == '*-stable') p_b = admin_project.protectedbranches.get('*-stable') -# master is protected by default +# master is protected by default when a branch has been created assert(len(admin_project.protectedbranches.list()) == 2) admin_project.protectedbranches.delete('master') p_b.delete() |