| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 3abc557 commit 19b38bd
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -31,6 +31,14 @@ List personal access tokens from other user_id (admin only):: | |||
| 31 | 31 | ||
| 32 | 32 | access_tokens = gl.personal_access_tokens.list(user_id=25) | |
| 33 | 33 | ||
| 34 | + Get a personal access token by id:: | ||
| 35 | + | ||
| 36 | + gl.personal_access_tokens.get(123) | ||
| 37 | + | ||
| 38 | + Get the personal access token currently used:: | ||
| 39 | + | ||
| 40 | + gl.personal_access_tokens.get("self") | ||
| 41 | + | ||
| 34 | 42 | Revoke a personal access token fetched via list:: | |
| 35 | 43 | ||
| 36 | 44 | access_token = access_tokens[0] | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,5 +1,7 @@ | |||
| 1 | + from typing import Any, cast, Union | ||
| 2 | + | ||
| 1 | 3 | from gitlab.base import RESTManager, RESTObject | |
| 2 | - from gitlab.mixins import CreateMixin, DeleteMixin, ListMixin, ObjectDeleteMixin | ||
| 4 | + from gitlab.mixins import CreateMixin, DeleteMixin, ObjectDeleteMixin, RetrieveMixin | ||
| 3 | 5 | from gitlab.types import ArrayAttribute, RequiredOptional | |
| 4 | 6 | ||
| 5 | 7 | __all__ = [ | |
@@ -14,11 +16,16 @@ class PersonalAccessToken(ObjectDeleteMixin, RESTObject): | |||
| 14 | 16 | pass | |
| 15 | 17 | ||
| 16 | 18 | ||
| 17 | - class PersonalAccessTokenManager(DeleteMixin, ListMixin, RESTManager): | ||
| 19 | + class PersonalAccessTokenManager(DeleteMixin, RetrieveMixin, RESTManager): | ||
| 18 | 20 | _path = "/personal_access_tokens" | |
| 19 | 21 | _obj_cls = PersonalAccessToken | |
| 20 | 22 | _list_filters = ("user_id",) | |
| 21 | 23 | ||
| 24 | + def get( | ||
| 25 | + self, id: Union[str, int], lazy: bool = False, **kwargs: Any | ||
| 26 | + ) -> PersonalAccessToken: | ||
| 27 | + return cast(PersonalAccessToken, super().get(id=id, lazy=lazy, **kwargs)) | ||
| 28 | + | ||
| 22 | 29 | ||
| 23 | 30 | class UserPersonalAccessToken(RESTObject): | |
| 24 | 31 | pass | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -13,6 +13,7 @@ | |||
| 13 | 13 | ||
| 14 | 14 | token_url = "http://localhost/api/v4/personal_access_tokens" | |
| 15 | 15 | single_token_url = f"{token_url}/{token_id}" | |
| 16 | + self_token_url = f"{token_url}/self" | ||
| 16 | 17 | user_token_url = f"http://localhost/api/v4/users/{user_id}/personal_access_tokens" | |
| 17 | 18 | ||
| 18 | 19 | content = { | |
@@ -41,15 +42,47 @@ def resp_create_user_personal_access_token(): | |||
| 41 | 42 | ||
| 42 | 43 | ||
| 43 | 44 | @pytest.fixture | |
| 44 | - def resp_personal_access_token(no_content): | ||
| 45 | - with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps: | ||
| 45 | + def resp_list_personal_access_tokens(): | ||
| 46 | + with responses.RequestsMock() as rsps: | ||
| 46 | 47 | rsps.add( | |
| 47 | 48 | method=responses.GET, | |
| 48 | 49 | url=token_url, | |
| 49 | 50 | json=[content], | |
| 50 | 51 | content_type="application/json", | |
| 51 | 52 | status=200, | |
| 52 | 53 | ) | |
| 54 | + yield rsps | ||
| 55 | + | ||
| 56 | + | ||
| 57 | + @pytest.fixture | ||
| 58 | + def resp_get_personal_access_token(): | ||
| 59 | + with responses.RequestsMock() as rsps: | ||
| 60 | + rsps.add( | ||
| 61 | + method=responses.GET, | ||
| 62 | + url=single_token_url, | ||
| 63 | + json=content, | ||
| 64 | + content_type="application/json", | ||
| 65 | + status=200, | ||
| 66 | + ) | ||
| 67 | + yield rsps | ||
| 68 | + | ||
| 69 | + | ||
| 70 | + @pytest.fixture | ||
| 71 | + def resp_get_personal_access_token_self(): | ||
| 72 | + with responses.RequestsMock() as rsps: | ||
| 73 | + rsps.add( | ||
| 74 | + method=responses.GET, | ||
| 75 | + url=self_token_url, | ||
| 76 | + json=content, | ||
| 77 | + content_type="application/json", | ||
| 78 | + status=200, | ||
| 79 | + ) | ||
| 80 | + yield rsps | ||
| 81 | + | ||
| 82 | + | ||
| 83 | + @pytest.fixture | ||
| 84 | + def resp_delete_personal_access_token(no_content): | ||
| 85 | + with responses.RequestsMock() as rsps: | ||
| 53 | 86 | rsps.add( | |
| 54 | 87 | method=responses.DELETE, | |
| 55 | 88 | url=single_token_url, | |
@@ -69,26 +102,38 @@ def test_create_personal_access_token(gl, resp_create_user_personal_access_token | |||
| 69 | 102 | assert access_token.name == token_name | |
| 70 | 103 | ||
| 71 | 104 | ||
| 72 | - def test_list_personal_access_tokens(gl, resp_personal_access_token): | ||
| 105 | + def test_list_personal_access_tokens(gl, resp_list_personal_access_tokens): | ||
| 73 | 106 | access_tokens = gl.personal_access_tokens.list() | |
| 74 | 107 | assert len(access_tokens) == 1 | |
| 75 | 108 | assert access_tokens[0].revoked is False | |
| 76 | 109 | assert access_tokens[0].name == token_name | |
| 77 | 110 | ||
| 78 | 111 | ||
| 79 | - def test_list_personal_access_tokens_filter(gl, resp_personal_access_token): | ||
| 112 | + def test_list_personal_access_tokens_filter(gl, resp_list_personal_access_tokens): | ||
| 80 | 113 | access_tokens = gl.personal_access_tokens.list(user_id=user_id) | |
| 81 | 114 | assert len(access_tokens) == 1 | |
| 82 | 115 | assert access_tokens[0].revoked is False | |
| 83 | 116 | assert access_tokens[0].user_id == user_id | |
| 84 | 117 | ||
| 85 | 118 | ||
| 86 | - def test_revoke_personal_access_token(gl, resp_personal_access_token): | ||
| 87 | - access_token = gl.personal_access_tokens.list(user_id=user_id)[0] | ||
| 119 | + def test_get_personal_access_token(gl, resp_get_personal_access_token): | ||
| 120 | + access_token = gl.personal_access_tokens.get(token_id) | ||
| 121 | + | ||
| 122 | + assert access_token.revoked is False | ||
| 123 | + assert access_token.user_id == user_id | ||
| 124 | + | ||
| 125 | + | ||
| 126 | + def test_get_personal_access_token_self(gl, resp_get_personal_access_token_self): | ||
| 127 | + access_token = gl.personal_access_tokens.get("self") | ||
| 128 | + | ||
| 129 | + assert access_token.revoked is False | ||
| 130 | + assert access_token.user_id == user_id | ||
| 131 | + | ||
| 132 | + | ||
| 133 | + def test_delete_personal_access_token(gl, resp_delete_personal_access_token): | ||
| 134 | + access_token = gl.personal_access_tokens.get(token_id, lazy=True) | ||
| 88 | 135 | access_token.delete() | |
| 89 | - assert resp_personal_access_token.assert_call_count(single_token_url, 1) | ||
| 90 | 136 | ||
| 91 | 137 | ||
| 92 | - def test_revoke_personal_access_token_by_id(gl, resp_personal_access_token): | ||
| 138 | + def test_revoke_personal_access_token_by_id(gl, resp_delete_personal_access_token): | ||
| 93 | 139 | gl.personal_access_tokens.delete(token_id) | |
| 94 | - assert resp_personal_access_token.assert_call_count(single_token_url, 1) | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments