|
1 | 1 | """
|
2 |
| -GitLab API: https://docs.gitlab.com/ee/api/personal_access_tokens.html |
| 2 | +GitLab API: |
| 3 | +https://docs.gitlab.com/ee/api/personal_access_tokens.html |
| 4 | +https://docs.gitlab.com/ee/api/users.html#create-a-personal-access-token |
3 | 5 | """
|
4 | 6 |
|
5 | 7 | import pytest
|
6 | 8 | import responses
|
7 | 9 |
|
| 10 | +user_id = 1 |
| 11 | +token_id = 1 |
| 12 | +token_name = "Test Token" |
| 13 | + |
| 14 | +token_url = "http://localhost/api/v4/personal_access_tokens" |
| 15 | +single_token_url = f"{token_url}/{token_id}" |
| 16 | +user_token_url = f"http://localhost/api/v4/users/{user_id}/personal_access_tokens" |
| 17 | + |
| 18 | +content = { |
| 19 | + "id": token_id, |
| 20 | + "name": token_name, |
| 21 | + "revoked": False, |
| 22 | + "created_at": "2020-07-23T14:31:47.729Z", |
| 23 | + "scopes": ["api"], |
| 24 | + "active": True, |
| 25 | + "user_id": user_id, |
| 26 | + "expires_at": None, |
| 27 | +} |
| 28 | + |
8 | 29 |
|
9 | 30 | @pytest.fixture
|
10 |
| -def resp_list_personal_access_token(): |
11 |
| - content = [ |
12 |
| - { |
13 |
| - "id": 4, |
14 |
| - "name": "Test Token", |
15 |
| - "revoked": False, |
16 |
| - "created_at": "2020-07-23T14:31:47.729Z", |
17 |
| - "scopes": ["api"], |
18 |
| - "active": True, |
19 |
| - "user_id": 24, |
20 |
| - "expires_at": None, |
21 |
| - } |
22 |
| - ] |
| 31 | +def resp_create_user_personal_access_token(): |
| 32 | + with responses.RequestsMock() as rsps: |
| 33 | + rsps.add( |
| 34 | + method=responses.POST, |
| 35 | + url=user_token_url, |
| 36 | + json=content, |
| 37 | + content_type="application/json", |
| 38 | + status=200, |
| 39 | + ) |
| 40 | + yield rsps |
23 | 41 |
|
| 42 | + |
| 43 | +@pytest.fixture |
| 44 | +def resp_personal_access_token(no_content): |
24 | 45 | with responses.RequestsMock(assert_all_requests_are_fired=False) as rsps:
|
25 | 46 | rsps.add(
|
26 | 47 | method=responses.GET,
|
27 |
| - url="http://localhost/api/v4/personal_access_tokens", |
28 |
| - json=content, |
| 48 | + url=token_url, |
| 49 | + json=[content], |
29 | 50 | content_type="application/json",
|
30 | 51 | status=200,
|
31 | 52 | )
|
| 53 | + rsps.add( |
| 54 | + method=responses.DELETE, |
| 55 | + url=single_token_url, |
| 56 | + json=no_content, |
| 57 | + content_type="application/json", |
| 58 | + status=204, |
| 59 | + ) |
32 | 60 | yield rsps
|
33 | 61 |
|
34 | 62 |
|
35 |
| -def test_list_personal_access_tokens(gl, resp_list_personal_access_token): |
| 63 | +def test_create_personal_access_token(gl, resp_create_user_personal_access_token): |
| 64 | + user = gl.users.get(1, lazy=True) |
| 65 | + access_token = user.personal_access_tokens.create( |
| 66 | + {"name": token_name, "scopes": "api"} |
| 67 | + ) |
| 68 | + assert access_token.revoked is False |
| 69 | + assert access_token.name == token_name |
| 70 | + |
| 71 | + |
| 72 | +def test_list_personal_access_tokens(gl, resp_personal_access_token): |
36 | 73 | access_tokens = gl.personal_access_tokens.list()
|
37 | 74 | assert len(access_tokens) == 1
|
38 | 75 | assert access_tokens[0].revoked is False
|
39 |
| - assert access_tokens[0].name == "Test Token" |
| 76 | + assert access_tokens[0].name == token_name |
40 | 77 |
|
41 | 78 |
|
42 |
| -def test_list_personal_access_tokens_filter(gl, resp_list_personal_access_token): |
43 |
| - access_tokens = gl.personal_access_tokens.list(user_id=24) |
| 79 | +def test_list_personal_access_tokens_filter(gl, resp_personal_access_token): |
| 80 | + access_tokens = gl.personal_access_tokens.list(user_id=user_id) |
44 | 81 | assert len(access_tokens) == 1
|
45 | 82 | assert access_tokens[0].revoked is False
|
46 |
| - assert access_tokens[0].user_id == 24 |
| 83 | + assert access_tokens[0].user_id == user_id |
| 84 | + |
| 85 | + |
| 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] |
| 88 | + access_token.delete() |
| 89 | + assert resp_personal_access_token.assert_call_count(single_token_url, 1) |
| 90 | + |
| 91 | + |
| 92 | +def test_revoke_personal_access_token_by_id(gl, resp_personal_access_token): |
| 93 | + gl.personal_access_tokens.delete(token_id) |
| 94 | + assert resp_personal_access_token.assert_call_count(single_token_url, 1) |
0 commit comments