8000 feat(objects): support getting project/group deploy tokens by id · python-gitlab/python-gitlab@fcd37fe · GitHub
[go: up one dir, main page]

Skip to content

Commit fcd37fe

Browse files
committed
feat(objects): support getting project/group deploy tokens by id
1 parent 19ab07d commit fcd37fe

File tree

3 files changed

+38
-7
lines changed

3 files changed

+38
-7
lines changed

docs/gl_objects/deploy_tokens.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ List the deploy tokens for a project::
5454

5555
deploy_tokens = project.deploytokens.list()
5656

57+
Get a deploy token for a project by id::
58+
59+
deploy_token = project.deploytokens.get(deploy_token_id)
60+
5761
Create a new deploy token to access registry images of a project:
5862

5963
In addition to required parameters ``name`` and ``scopes``, this method accepts
@@ -107,6 +111,10 @@ List the deploy tokens for a group::
107111

108112
deploy_tokens = group.deploytokens.list()
109113

114+
Get a deploy token for a group by id::
115+
116+
deploy_token = group.deploytokens.get(deploy_token_id)
117+
110118
Create a new deploy token to access all repositories of all projects in a group:
111119

112120
In addition to required parameters ``name`` and ``scopes``, this method accepts

gitlab/v4/objects/deploy_tokens.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
from typing import Any, cast, Union
2+
13
from gitlab import types
24
from gitlab.base import RequiredOptional, RESTManager, RESTObject
3-
from gitlab.mixins import CreateMixin, DeleteMixin, ListMixin, ObjectDeleteMixin
5+
from gitlab.mixins import (
6+
CreateMixin,
7+
DeleteMixin,
8+
ListMixin,
9+
ObjectDeleteMixin,
10+
RetrieveMixin,
11+
)
412

513
__all__ = [
614
"DeployToken",
@@ -25,7 +33,7 @@ class GroupDeployToken(ObjectDeleteMixin, RESTObject):
2533
pass
2634

2735

28-
class GroupDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
36+
class GroupDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
2937
_path = "/groups/{group_id}/deploy_tokens"
3038
_from_parent_attrs = {"group_id": "id"}
3139
_obj_cls = GroupDeployToken
@@ -41,12 +49,17 @@ class GroupDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
4149
)
4250
_types = {"scopes": types.CommaSeparatedListAttribute}
4351

52+
def get(
53+
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
54+
) -> GroupDeployToken:
55+
return cast(GroupDeployToken, super().get(id=id, lazy=lazy, **kwargs))
56+
4457

4558
class ProjectDeployToken(ObjectDeleteMixin, RESTObject):
4659
pass
4760

4861

49-
class ProjectDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager):
62+
class ProjectDeployTokenManager(RetrieveMixin, CreateMixin, DeleteMixin, RESTManager):
5063
_path = "/projects/{project_id}/deploy_tokens"
5164
_from_parent_attrs = {"project_id": "id"}
5265
_obj_cls = ProjectDeployToken
@@ -61,3 +74,8 @@ class ProjectDeployTokenManager(ListMixin, CreateMixin, DeleteMixin, RESTManager
6174
),
6275
)
6376
_types = {"scopes": types.CommaSeparatedListAttribute}
77+
78+
def get(
79+
self, id: Union[str, int], lazy: bool = False, **kwargs: Any
80+
) -> ProjectDeployToken:
81+
return cast(ProjectDeployToken, super().get(id=id, lazy=lazy, **kwargs))

tests/functional/api/test_deploy_tokens.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ def test_project_deploy_tokens(gl, project):
1010
assert len(project.deploytokens.list()) == 1
1111
assert gl.deploytokens.list() == project.deploytokens.list()
1212

13-
assert project.deploytokens.list()[0].name == "foo"
14-
assert project.deploytokens.list()[0].expires_at == "2022-01-01T00:00:00.000Z"
15-
assert project.deploytokens.list()[0].scopes == ["read_registry"]
16-
assert project.deploytokens.list()[0].username == "bar"
13+
deploy_token = project.deploytokens.get(deploy_token.id)
14+
assert deploy_token.name == "foo"
15+
assert deploy_token.expires_at == "2022-01-01T00:00:00.000Z"
16+
assert deploy_token.scopes == ["read_registry"]
17+
assert deploy_token.username == "bar"
1718

1819
deploy_token.delete()
1920
assert len(project.deploytokens.list()) == 0
@@ -31,6 +32,10 @@ def test_group_deploy_tokens(gl, group):
3132
assert len(group.deploytokens.list()) == 1
3233
assert gl.deploytokens.list() == group.deploytokens.list()
3334

35+
deploy_token = group.deploytokens.get(deploy_token.id)
36+
assert deploy_token.name == "foo"
37+
assert deploy_token.scopes == ["read_registry"]
38+
3439
deploy_token.delete()
3540
assert len(group.deploytokens.list()) == 0
3641
assert len(gl.de 3209 ploytokens.list()) == 0

0 commit comments

Comments
 (0)
0