summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-04-04 23:20:23 +0200
committerNejc Habjan <nejc.habjan@siemens.com>2022-04-04 23:20:23 +0200
commitfcd37feff132bd5b225cde9d5f9c88e62b3f1fd6 (patch)
treebd9b21c1f643c83de2a6ca2d3e160c6599cb0068
parent19ab07d425cbe9fd23e1e94e107b52f9d14eecf1 (diff)
downloadgitlab-fcd37feff132bd5b225cde9d5f9c88e62b3f1fd6.tar.gz
feat(objects): support getting project/group deploy tokens by id
-rw-r--r--docs/gl_objects/deploy_tokens.rst8
-rw-r--r--gitlab/v4/objects/deploy_tokens.py24
-rw-r--r--tests/functional/api/test_deploy_tokens.py13
3 files changed, 38 insertions, 7 deletions
diff --git a/docs/gl_objects/deploy_tokens.rst b/docs/gl_objects/deploy_tokens.rst
index 302cb9c..c7c1389 100644
--- a/docs/gl_objects/deploy_tokens.rst
+++ b/docs/gl_objects/deploy_tokens.rst
@@ -54,6 +54,10 @@ List the deploy tokens for a project::
deploy_tokens = project.deploytokens.list()
+Get a deploy token for a project by id::
+
+ deploy_token = project.deploytokens.get(deploy_token_id)
+
Create a new deploy token to access registry images of a project:
In addition to required parameters ``name`` and ``scopes``, this method accepts
@@ -107,6 +111,10 @@ List the deploy tokens for a group::
deploy_tokens = group.deploytokens.list()
+Get a deploy token for a group by id::
+
+ deploy_token = group.deploytokens.get(deploy_token_id)
+
Create a new deploy token to access all repositories of all projects in a group:
In addition to required parameters ``name`` and ``scopes``, this method accepts
diff --git a/gitlab/v4/objects/deploy_tokens.py b/gitlab/v4/objects/deploy_tokens.py
index 563c1d6..9fcfc23 100644
--- a/gitlab/v4/objects/deploy_tokens.py
+++ b/gitlab/v4/objects/deploy_tokens.py
@@ -1,6 +1,14 @@
+from typing import Any, cast, Union
+
from gitlab import types
from gitlab.base import RequiredOptional, RESTManager, RESTObject
-from gitlab.mixins import CreateMixin, DeleteMixin, ListMixin, ObjectDeleteMixin
+from gitlab.mixins import (
+ CreateMixin,
+ DeleteMixin,
+ ListMixin,
+ ObjectDeleteMixin,
+ RetrieveMixin,
+)
__all__ = [
"DeployToken",
@@ -25,7 +33,7 @@ class GroupDeployToken(ObjectDeleteMixin, RESTObject):
pass
-class GroupDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
+class GroupDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
_path = "/groups/{group_id}/deploy_tokens"
_from_parent_attrs = {"group_id": "id"}
_obj_cls = GroupDeployToken
@@ -41,12 +49,17 @@ class GroupDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
)
_types = {"scopes": types.CommaSeparatedListAttribute}
+ def get(
+ self, id: Union[str, int], lazy: bool = False, **kwargs: Any
+ ) -> GroupDeployToken:
+ return cast(GroupDeployToken, super().get(id=id, lazy=lazy, **kwargs))
+
class ProjectDeployToken(ObjectDeleteMixin, RESTObject):
pass
-class ProjectDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
+class ProjectDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
_path = "/projects/{project_id}/deploy_tokens"
_from_parent_attrs = {"project_id": "id"}
_obj_cls = ProjectDeployToken
@@ -61,3 +74,8 @@ class ProjectDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager
),
)
_types = {"scopes": types.CommaSeparatedListAttribute}
+
+ def get(
+ self, id: Union[str, int], lazy: bool = False, **kwargs: Any
+ ) -> ProjectDeployToken:
+ return cast(ProjectDeployToken, super().get(id=id, lazy=lazy, **kwargs))
diff --git a/tests/functional/api/test_deploy_tokens.py b/tests/functional/api/test_deploy_tokens.py
index efcf8b1..9824af5 100644
--- a/tests/functional/api/test_deploy_tokens.py
+++ b/tests/functional/api/test_deploy_tokens.py
@@ -10,10 +10,11 @@ def test_project_deploy_tokens(gl, project):
assert len(project.deploytokens.list()) == 1
assert gl.deploytokens.list() == project.deploytokens.list()
- assert project.deploytokens.list()[0].name == "foo"
- assert project.deploytokens.list()[0].expires_at == "2022-01-01T00:00:00.000Z"
- assert project.deploytokens.list()[0].scopes == ["read_registry"]
- assert project.deploytokens.list()[0].username == "bar"
+ deploy_token = project.deploytokens.get(deploy_token.id)
+ assert deploy_token.name == "foo"
+ assert deploy_token.expires_at == "2022-01-01T00:00:00.000Z"
+ assert deploy_token.scopes == ["read_registry"]
+ assert deploy_token.username == "bar"
deploy_token.delete()
assert len(project.deploytokens.list()) == 0
@@ -31,6 +32,10 @@ def test_group_deploy_tokens(gl, group):
assert len(group.deploytokens.list()) == 1
assert gl.deploytokens.list() == group.deploytokens.list()
+ deploy_token = group.deploytokens.get(deploy_token.id)
+ assert deploy_token.name == "foo"
+ assert deploy_token.scopes == ["read_registry"]
+
deploy_token.delete()
assert len(group.deploytokens.list()) == 0
assert len(gl.deploytokens.list()) == 0