diff options
author | Max Wittig <max.wittig@siemens.com> | 2021-02-17 15:54:09 +0100 |
---|---|---|
committer | Max Wittig <max.wittig@siemens.com> | 2021-02-17 15:54:09 +0100 |
commit | 2bb16fac18a6a91847201c174f3bf1208338f6aa (patch) | |
tree | bfbcc11c1499ae2c03f77d71b4f361e8a4b0b3cc | |
parent | bec2094180268effabd24e71ca74708c0e7832a9 (diff) | |
download | gitlab-feat/personal-access-token-api.tar.gz |
feat: add personal access token APIfeat/personal-access-token-api
See: https://docs.gitlab.com/ee/api/personal_access_tokens.html
-rw-r--r-- | docs/gl_objects/personal_access_tokens.rst | 28 | ||||
-rw-r--r-- | gitlab/__init__.py | 1 | ||||
-rw-r--r-- | gitlab/tests/objects/test_personal_access_tokens.py | 46 | ||||
-rw-r--r-- | gitlab/v4/objects/__init__.py | 1 | ||||
-rw-r--r-- | gitlab/v4/objects/personal_access_tokens.py | 18 |
5 files changed, 94 insertions, 0 deletions
diff --git a/docs/gl_objects/personal_access_tokens.rst b/docs/gl_objects/personal_access_tokens.rst new file mode 100644 index 0000000..3cbc744 --- /dev/null +++ b/docs/gl_objects/personal_access_tokens.rst @@ -0,0 +1,28 @@ +###################### +Personal Access Tokens +###################### + +Get a list of personal access tokens + +References +---------- + +* v4 API: + + + :class:`gitlab.v4.objects.PersonalAccessToken` + + :class:`gitlab.v4.objects.PersonalAcessTokenManager` + + :attr:`gitlab.Gitlab.personal_access_tokens` + +* GitLab API: https://docs.gitlab.com/ee/api/personal_access_tokens.html + +Examples +-------- + +List personal access tokens:: + + access_tokens = gl.personal_access_tokens.list() + print(access_tokens[0].name) + +List personal access tokens from other user_id (admin only):: + + access_tokens = gl.personal_access_tokens.list(user_id=25) diff --git a/gitlab/__init__.py b/gitlab/__init__.py index 000fe7f..71a473a 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -143,6 +143,7 @@ class Gitlab(object): self.user_activities = objects.UserActivitiesManager(self) self.applications = objects.ApplicationManager(self) self.variables = objects.VariableManager(self) + self.personal_access_tokens = objects.PersonalAccessTokenManager(self) def __enter__(self): return self diff --git a/gitlab/tests/objects/test_personal_access_tokens.py b/gitlab/tests/objects/test_personal_access_tokens.py new file mode 100644 index 0000000..920cb1d --- /dev/null +++ b/gitlab/tests/objects/test_personal_access_tokens.py @@ -0,0 +1,46 @@ +""" +GitLab API: https://docs.gitlab.com/ee/api/personal_access_tokens.html +""" + +import pytest +import responses + + +@pytest.fixture +def resp_list_personal_access_token(): + content = [ + { + "id": 4, + "name": "Test Token", + "revoked": False, + "created_at": "2020-07-23T14:31:47.729Z", + "scopes": ["api"], + "active": True, + "user_id": 24, + "expires_at": None, + } + ] + + with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps: + rsps.add( + method=responses.GET, + url="http://localhost/api/v4/personal_access_tokens", + json=content, + content_type="application/json", + status=200, + ) + yield rsps + + +def test_list_personal_access_tokens(gl, resp_list_personal_access_token): + access_tokens = gl.personal_access_tokens.list() + assert len(access_tokens) == 1 + assert access_tokens[0].revoked is False + assert access_tokens[0].name == "Test Token" + + +def test_list_personal_access_tokens_filter(gl, resp_list_personal_access_token): + access_tokens = gl.personal_access_tokens.list(user_id=24) + assert len(access_tokens) == 1 + assert access_tokens[0].revoked is False + assert access_tokens[0].user_id == 24 diff --git a/gitlab/v4/objects/__init__.py b/gitlab/v4/objects/__init__.py index 4708012..9f91f53 100644 --- a/gitlab/v4/objects/__init__.py +++ b/gitlab/v4/objects/__init__.py @@ -69,6 +69,7 @@ from .triggers import * from .users import * from .variables import * from .wikis import * +from .personal_access_tokens import * # TODO: deprecate these in favor of gitlab.const.* diff --git a/gitlab/v4/objects/personal_access_tokens.py b/gitlab/v4/objects/personal_access_tokens.py new file mode 100644 index 0000000..211bd92 --- /dev/null +++ b/gitlab/v4/objects/personal_access_tokens.py @@ -0,0 +1,18 @@ +from gitlab.base import * # noqa +from gitlab.mixins import * # noqa + + +__all__ = [ + "PersonalAccessToken", + "PersonalAccessTokenManager", +] + + +class PersonalAccessToken(RESTObject): + pass + + +class PersonalAccessTokenManager(ListMixin, RESTManager): + _path = "/personal_access_tokens" + _obj_cls = PersonalAccessToken + _list_filters = ("user_id",) |