Skip to content

Commit 91bfff7

Browse files
committed
fix: update api tests for GL 16.8
- Make sure we're testing python-gitlab functionality, make sure we're not awaiting on Gitlab Async functions - Decouple and improve test stability Signed-off-by: Tim Knight <tim.knight1@engineering.digital.dwp.gov.uk>
1 parent 24d9d3c commit 91bfff7

25 files changed

+523
-235
lines changed

tests/functional/api/test_boards.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
from gitlab import GitlabDeleteError
2+
3+
14
def test_project_boards(project):
25
assert not project.boards.list()
36

47
board = project.boards.create({"name": "testboard"})
58
board = project.boards.get(board.id)
69

7-
project.boards.delete(board.id)
8-
assert not project.boards.list()
10+
# Raises:
11+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
12+
try:
13+
project.boards.delete(board.id)
14+
except GitlabDeleteError as error:
15+
assert False, f"project.boards.delete raise error {error}"
916

1017

1118
def test_group_boards(group):
@@ -14,5 +21,9 @@ def test_group_boards(group):
1421
board = group.boards.create({"name": "testboard"})
1522
board = group.boards.get(board.id)
1623

17-
group.boards.delete(board.id)
18-
assert not group.boards.list()
24+
# Raises:
25+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
26+
try:
27+
group.boards.delete(board.id)
28+
except GitlabDeleteError as error:
29+
assert False, f"group.boards.delete raise error {error}"

tests/functional/api/test_branches.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
https://docs.gitlab.com/ee/api/branches.html
44
"""
55

6+
from gitlab import GitlabDeleteError
7+
68

79
def test_branch_name_with_period(project):
810
# Make sure we can create and get a branch name containing a period '.'
@@ -14,4 +16,9 @@ def test_branch_name_with_period(project):
1416
fetched_branch = project.branches.get(branch_name)
1517
assert branch.name == fetched_branch.name
1618

17-
branch.delete()
19+
# Raises:
20+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
21+
try:
22+
branch.delete()
23+
except GitlabDeleteError as error:
24+
assert False, f"branch.delete raise error {error}"

tests/functional/api/test_bulk_imports.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import time
2+
23
import pytest
34

45
import gitlab
@@ -15,14 +16,16 @@ def bulk_import_enabled(gl: gitlab.Gitlab):
1516
# todo: why so fussy with feature flag timing?
1617
time.sleep(5)
1718
get_settings = gl.settings.get()
18-
assert get_settings.bulk_import_enabled == True
19+
assert get_settings.bulk_import_enabled is True
1920

2021
yield settings
2122

2223
settings.bulk_import_enabled = bulk_import_default
2324
settings.save()
2425

2526

27+
# https://github.com/python-gitlab/python-gitlab/pull/2790#pullrequestreview-1873617123
28+
@pytest.mark.skip(reason="Bulk Imports to be worked on in a follow up")
2629
def test_bulk_imports(gl, group, bulk_import_enabled):
2730
destination = f"{group.full_path}-import"
2831
configuration = {

tests/functional/api/test_current_user.py

+21-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
1+
from gitlab import GitlabDeleteError
2+
3+
14
def test_current_user_email(gl):
25
gl.auth()
36
mail = gl.user.emails.create({"email": "current@user.com"})
47
assert mail in gl.user.emails.list()
58

6-
mail.delete()
7-
assert mail not in gl.user.emails.list()
9+
# Raises:
10+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
11+
try:
12+
mail.delete()
13+
except GitlabDeleteError as error:
14+
assert False, f"mail.delete raise error {error}"
815

916

1017
def test_current_user_gpg_keys(gl, GPG_KEY):
@@ -14,17 +21,25 @@ def test_current_user_gpg_keys(gl, GPG_KEY):
1421

1522
# Seems broken on the gitlab side
1623
gkey = gl.user.gpgkeys.get(gkey.id)
17-
gkey.delete()
18-
assert gkey not in gl.user.gpgkeys.list()
24+
# Raises:
25+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
26+
try:
27+
gkey.delete()
28+
except GitlabDeleteError as error:
29+
assert False, f"gkey.delete raise error {error}"
1930

2031

2132
def test_current_user_ssh_keys(gl, SSH_KEY):
2233
gl.auth()
2334
key = gl.user.keys.create({"title": "testkey", "key": SSH_KEY})
2435
assert key in gl.user.keys.list()
2536

26-
key.delete()
27-
assert key not in gl.user.keys.list()
37+
# Raises:
38+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
39+
try:
40+
key.delete()
41+
except GitlabDeleteError as error:
42+
assert False, f"key.delete raise error {error}"
2843

2944

3045
def test_current_user_status(gl):
+16-3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
from gitlab import GitlabDeleteError
2+
3+
14
def test_project_deploy_keys(gl, project, DEPLOY_KEY):
25
deploy_key = project.keys.create({"title": "foo@bar", "key": DEPLOY_KEY})
36
assert deploy_key in project.keys.list()
@@ -6,6 +9,16 @@ def test_project_deploy_keys(gl, project, DEPLOY_KEY):
69
project2.keys.enable(deploy_key.id)
710
assert deploy_key in project2.keys.list()
811

9-
project2.keys.delete(deploy_key.id)
10-
assert deploy_key not in project2.keys.list()
11-
project2.delete()
12+
# Raises:
13+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
14+
try:
15+
project2.keys.delete(deploy_key.id)
16+
except GitlabDeleteError as error:
17+
assert False, f"project2.keys.delete raise error {error}"
18+
19+
# Raises:
20+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
21+
try:
22+
project2.delete()
23+
except GitlabDeleteError as error:
24+
assert False, f"project2.delete raise error {error}"

tests/functional/api/test_deploy_tokens.py

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from datetime import date
22

3+
from gitlab import GitlabDeleteError
4+
35

46
def test_project_deploy_tokens(gl, project):
57
today = date.today().isoformat()
@@ -20,9 +22,12 @@ def test_project_deploy_tokens(gl, project):
2022
assert deploy_token.scopes == ["read_registry"]
2123
assert deploy_token.username == "bar"
2224

23-
deploy_token.delete()
24-
assert deploy_token not in project.deploytokens.list()
25-
assert deploy_token not in gl.deploytokens.list()
25+
# Raises:
26+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
27+
try:
28+
deploy_token.delete()
29+
except GitlabDeleteError as error:
30+
assert False, f"deploy_token.delete raise error {error}"
2631

2732

2833
def test_group_deploy_tokens(gl, group):
@@ -40,6 +45,9 @@ def test_group_deploy_tokens(gl, group):
4045
assert deploy_token.name == "foo"
4146
assert deploy_token.scopes == ["read_registry"]
4247

43-
deploy_token.delete()
44-
assert deploy_token not in group.deploytokens.list()
45-
assert deploy_token not in gl.deploytokens.list()
48+
# Raises:
49+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
50+
try:
51+
deploy_token.delete()
52+
except GitlabDeleteError as error:
53+
assert False, f"deploy_token.delete raise error {error}"

tests/functional/api/test_epics.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import pytest
22

3+
from gitlab import GitlabDeleteError
4+
35
pytestmark = pytest.mark.gitlab_premium
46

57

@@ -22,8 +24,12 @@ def test_epic_issues(epic, issue):
2224
epic_issue = epic.issues.create({"issue_id": issue.id})
2325
assert epic.issues.list()
2426

25-
epic_issue.delete()
26-
assert not epic.issues.list()
27+
# Raises:
28+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
29+
try:
30+
epic_issue.delete()
31+
except GitlabDeleteError as error:
32+
assert False, f"epic_issue.delete raise error {error}"
2733

2834

2935
def test_epic_notes(epic):

tests/functional/api/test_gitlab.py

+25-7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import requests
33

44
import gitlab
5+
from gitlab import GitlabDeleteError
56

67

78
@pytest.fixture(
@@ -52,8 +53,12 @@ def test_broadcast_messages(gl, get_all_kwargs):
5253
msg = gl.broadcastmessages.get(msg_id)
5354
assert msg.color == "#444444"
5455

55-
msg.delete()
56-
assert msg not in gl.broadcastmessages.list()
56+
# Raises:
57+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
58+
try:
59+
msg.delete()
60+
except GitlabDeleteError as error:
61+
assert False, f"msg.delete raise error {error}"
5762

5863

5964
def test_markdown(gl):
@@ -150,8 +155,12 @@ def test_hooks(gl):
150155
hook = gl.hooks.create({"url": "http://whatever.com"})
151156
assert hook in gl.hooks.list()
152157

153-
hook.delete()
154-
assert hook not in gl.hooks.list()
158+
# Raises:
159+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
160+
try:
161+
hook.delete()
162+
except GitlabDeleteError as error:
163+
assert False, f"hook.delete raise error {error}"
155164

156165

157166
def test_namespaces(gl, get_all_kwargs):
@@ -201,8 +210,12 @@ def test_features(gl):
201210
assert feat.name == "foo"
202211
assert feat in gl.features.list()
203212

204-
feat.delete()
205-
assert feat not in gl.features.list()
213+
# Raises:
214+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
215+
try:
216+
feat.delete()
217+
except GitlabDeleteError as error:
218+
assert False, f"feat.delete raise error {error}"
206219

207220

208221
def test_pagination(gl, project):
@@ -214,7 +227,12 @@ def test_pagination(gl, project):
214227
assert len(list2) == 1
215228
assert list1[0].id != list2[0].id
216229

217-
project2.delete()
230+
# Raises:
231+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
232+
try:
233+
project2.delete()
234+
except GitlabDeleteError as error:
235+
assert False, f"project2.delete raise error {error}"
218236

219237

220238
def test_rate_limits(gl):

tests/functional/api/test_groups.py

+39-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22

33
import gitlab
4+
from gitlab import GitlabDeleteError
45

56

67
def test_groups(gl):
@@ -104,9 +105,15 @@ def test_groups(gl):
104105
assert len(result) == 1
105106
assert result[0].id == user.id
106107

107-
group1.members.delete(user.id)
108-
assert user not in group1.members.list()
108+
# Raises:
109+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
110+
try:
111+
group1.members.delete(user.id)
112+
except GitlabDeleteError as error:
113+
assert False, f"group1.members.delete(user.id) raise error {error}"
114+
109115
assert group1.members_all.list()
116+
110117
member = group1.members.get(user2.id)
111118
member.access_level = gitlab.const.AccessLevel.OWNER
112119
member.save()
@@ -134,8 +141,12 @@ def test_group_labels(group):
134141
label = group.labels.get("Label:that requires:encoding")
135142
assert label.name == "Label:that requires:encoding"
136143

137-
label.delete()
138-
assert label not in group.labels.list()
144+
# Raises:
145+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
146+
try:
147+
label.delete()
148+
except GitlabDeleteError as error:
149+
assert False, f"label.delete raise error {error}"
139150

140151

141152
@pytest.mark.gitlab_premium
@@ -193,8 +204,12 @@ def test_group_badges(group):
193204
badge = group.badges.get(badge.id)
194205
assert badge.image_url == "http://another.example.com"
195206

196-
badge.delete()
197-
assert badge not in group.badges.list()
207+
# Raises:
208+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
209+
try:
210+
badge.delete()
211+
except GitlabDeleteError as error:
212+
assert False, f"badge.delete raise error {error}"
198213

199214

200215
def test_group_milestones(group):
@@ -227,8 +242,12 @@ def test_group_custom_attributes(gl, group):
227242
assert attr.value == "value2"
228243
assert attr in group.customattributes.list()
229244

230-
attr.delete()
231-
assert attr not in group.customattributes.list()
245+
# Raises:
246+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
247+
try:
248+
attr.delete()
249+
except GitlabDeleteError as error:
250+
assert False, f"attr.delete raise error {error}"
232251

233252

234253
def test_group_subgroups_projects(gl, user):
@@ -269,8 +288,12 @@ def test_group_wiki(group):
269288
wiki.content = "new content"
270289
wiki.save()
271290

272-
wiki.delete()
273-
assert wiki not in group.wikis.list()
291+
# Raises:
292+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
293+
try:
294+
wiki.delete()
295+
except GitlabDeleteError as error:
296+
assert False, f"wiki.delete raise error {error}"
274297

275298

276299
@pytest.mark.gitlab_premium
@@ -284,8 +307,12 @@ def test_group_hooks(group):
284307
hook = group.hooks.get(hook.id)
285308
assert hook.note_events is True
286309

287-
hook.delete()
288-
assert hook not in group.hooks.list()
310+
# Raises:
311+
# GitlabDeleteError: If the server cannot perform the request (the return code is not 2xx)
312+
try:
313+
hook.delete()
314+
except GitlabDeleteError as error:
315+
assert False, f"hook.delete raise error {error}"
289316

290317

291318
def test_group_transfer(gl, group):

0 commit comments

Comments
 (0)