summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <hab.nejc@gmail.com>2021-02-21 12:25:55 +0100
committerNejc Habjan <hab.nejc@gmail.com>2021-02-21 12:25:55 +0100
commitab2a1c816d83e9e308c0c9c7abf1503438b0b3be (patch)
tree0c3ba0019095f3dbce2b170d5b7e80f8e4adc16a
parent958a6aa83ead3fb6be6ec61bdd894ad78346e7bd (diff)
downloadgitlab-ab2a1c816d83e9e308c0c9c7abf1503438b0b3be.tar.gz
test(api): add functional test for release links API
-rw-r--r--tools/functional/api/test_projects.py36
-rw-r--r--tools/functional/api/test_releases.py36
-rw-r--r--tools/functional/conftest.py33
3 files changed, 70 insertions, 35 deletions
diff --git a/tools/functional/api/test_projects.py b/tools/functional/api/test_projects.py
index 945a6ec..404f89d 100644
--- a/tools/functional/api/test_projects.py
+++ b/tools/functional/api/test_projects.py
@@ -197,32 +197,6 @@ def test_project_protected_branches(project):
assert len(project.protectedbranches.list()) == 0
-def test_project_releases(gl):
- project = gl.projects.create(
- {"name": "release-test-project", "initialize_with_readme": True}
- )
- release_name = "Demo Release"
- release_tag_name = "v1.2.3"
- release_description = "release notes go here"
- release = project.releases.create(
- {
- "name": release_name,
- "tag_name": release_tag_name,
- "description": release_description,
- "ref": "master",
- }
- )
- assert len(project.releases.list()) == 1
- assert project.releases.get(release_tag_name)
- assert release.name == release_name
- assert release.tag_name == release_tag_name
- assert release.description == release_description
-
- project.releases.delete(release_tag_name)
- assert len(project.releases.list()) == 0
- project.delete()
-
-
def test_project_remote_mirrors(project):
mirror_url = "http://gitlab.test/root/mirror.git"
@@ -260,15 +234,7 @@ def test_project_stars(project):
assert project.star_count == 0
-def test_project_tags(project):
- project.files.create(
- {
- "file_path": "README",
- "branch": "master",
- "content": "Initial content",
- "commit_message": "Initial commit",
- }
- )
+def test_project_tags(project, project_file):
tag = project.tags.create({"tag_name": "v1.0", "ref": "master"})
assert len(project.tags.list()) == 1
diff --git a/tools/functional/api/test_releases.py b/tools/functional/api/test_releases.py
new file mode 100644
index 0000000..55f7920
--- /dev/null
+++ b/tools/functional/api/test_releases.py
@@ -0,0 +1,36 @@
+release_name = "Demo Release"
+release_tag_name = "v1.2.3"
+release_description = "release notes go here"
+
+link_data = {"url": "https://example.com", "name": "link_name"}
+
+
+def test_create_project_release(project, project_file):
+ project.refresh() # Gets us the current default branch
+ release = project.releases.create(
+ {
+ "name": release_name,
+ "tag_name": release_tag_name,
+ "description": release_description,
+ "ref": project.default_branch,
+ }
+ )
+
+ assert len(project.releases.list()) == 1
+ assert project.releases.get(release_tag_name)
+ assert release.name == release_name
+ assert release.tag_name == release_tag_name
+ assert release.description == release_description
+
+
+def test_delete_project_release(project, release):
+ project.releases.delete(release.tag_name)
+ assert release not in project.releases.list()
+
+
+def test_create_project_release_links(project, release):
+ link = release.links.create(link_data)
+
+ release = project.releases.get(release.tag_name)
+ assert release.assets["links"][0]["url"] == link_data["url"]
+ assert release.assets["links"][0]["name"] == link_data["name"]
diff --git a/tools/functional/conftest.py b/tools/functional/conftest.py
index 675dba9..a0b14f9 100644
--- a/tools/functional/conftest.py
+++ b/tools/functional/conftest.py
@@ -197,6 +197,39 @@ def project(gl):
@pytest.fixture(scope="module")
+def project_file(project):
+ """File fixture for tests requiring a project with files and branches."""
+ project_file = project.files.create(
+ {
+ "file_path": "README",
+ "branch": "master",
+ "content": "Initial content",
+ "commit_message": "Initial commit",
+ }
+ )
+
+ return project_file
+
+
+@pytest.fixture(scope="function")
+def release(project, project_file):
+ _id = uuid.uuid4().hex
+ name = f"test-release-{_id}"
+
+ project.refresh() # Gets us the current default branch
+ release = project.releases.create(
+ {
+ "name": name,
+ "tag_name": _id,
+ "description": "description",
+ "ref": project.default_branch,
+ }
+ )
+
+ return release
+
+
+@pytest.fixture(scope="module")
def user(gl):
"""User fixture for user API resource tests."""
_id = uuid.uuid4().hex