Skip to content

Commit ab2a1c8

Browse files
committed
test(api): add functional test for release links API
1 parent 958a6aa commit ab2a1c8

File tree

3 files changed

+70
-35
lines changed

3 files changed

+70
-35
lines changed

tools/functional/api/test_projects.py

Lines changed: 1 addition & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -197,32 +197,6 @@ def test_project_protected_branches(project):
197197
assert len(project.protectedbranches.list()) == 0
198198

199199

200-
def test_project_releases(gl):
201-
project = gl.projects.create(
202-
{"name": "release-test-project", "initialize_with_readme": True}
203-
)
204-
release_name = "Demo Release"
205-
release_tag_name = "v1.2.3"
206-
release_description = "release notes go here"
207-
release = project.releases.create(
208-
{
209-
"name": release_name,
210-
"tag_name": release_tag_name,
211-
"description": release_description,
212-
"ref": "master",
213-
}
214-
)
215-
assert len(project.releases.list()) == 1
216-
assert project.releases.get(release_tag_name)
217-
assert release.name == release_name
218-
assert release.tag_name == release_tag_name
219-
assert release.description == release_description
220-
221-
project.releases.delete(release_tag_name)
222-
assert len(project.releases.list()) == 0
223-
project.delete()
224-
225-
226200
def test_project_remote_mirrors(project):
227201
mirror_url = "http://gitlab.test/root/mirror.git"
228202

@@ -260,15 +234,7 @@ def test_project_stars(project):
260234
assert project.star_count == 0
261235

262236

263-
def test_project_tags(project):
264-
project.files.create(
265-
{
266-
"file_path": "README",
267-
"branch": "master",
268-
"content": "Initial content",
269-
"commit_message": "Initial commit",
270-
}
271-
)
237+
def test_project_tags(project, project_file):
272238
tag = project.tags.create({"tag_name": "v1.0", "ref": "master"})
273239
assert len(project.tags.list()) == 1
274240

tools/functional/api/test_releases.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
release_name = "Demo Release"
2+
release_tag_name = "v1.2.3"
3+
release_description = "release notes go here"
4+
5+
link_data = {"url": "https://example.com", "name": "link_name"}
6+
7+
8+
def test_create_project_release(project, project_file):
9+
project.refresh() # Gets us the current default branch
10+
release = project.releases.create(
11+
{
12+
"name": release_name,
13+
"tag_name": release_tag_name,
14+
"description": release_description,
15+
"ref": project.default_branch,
16+
}
17+
)
18+
19+
assert len(project.releases.list()) == 1
20+
assert project.releases.get(release_tag_name)
21+
assert release.name == release_name
22+
assert release.tag_name == release_tag_name
23+
assert release.description == release_description
24+
25+
26+
def test_delete_project_release(project, release):
27+
project.releases.delete(release.tag_name)
28+
assert release not in project.releases.list()
29+
30+
31+
def test_create_project_release_links(project, release):
32+
link = release.links.create(link_data)
33+
34+
release = project.releases.get(release.tag_name)
35+
assert release.assets["links"][0]["url"] == link_data["url"]
36+
assert release.assets["links"][0]["name"] == link_data["name"]

tools/functional/conftest.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,39 @@ def project(gl):
196196
print(f"Project already deleted: {e}")
197197

198198

199+
@pytest.fixture(scope="module")
200+
def project_file(project):
201+
"""File fixture for tests requiring a project with files and branches."""
202+
project_file = project.files.create(
203+
{
204+
"file_path": "README",
205+
"branch": "master",
206+
"content": "Initial content",
207+
"commit_message": "Initial commit",
208+
}
209+
)
210+
211+
return project_file
212+
213+
214+
@pytest.fixture(scope="function")
215+
def release(project, project_file):
216+
_id = uuid.uuid4().hex
217+
name = f"test-release-{_id}"
218+
219+
project.refresh() # Gets us the current default branch
220+
release = project.releases.create(
221+
{
222+
"name": name,
223+
"tag_name": _id,
224+
"description": "description",
225+
"ref": project.default_branch,
226+
}
227+
)
228+
229+
return release
230+
231+
199232
@pytest.fixture(scope="module")
200233
def user(gl):
201234
"""User fixture for user API resource tests."""

0 commit comments

Comments
 (0)