summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-10-16 23:26:54 +0200
committerJohn Villalovos <john@sodarock.com>2022-10-18 00:04:38 -0700
commit88c2505b05dbcfa41b9e0458d4f2ec7dcc6f8169 (patch)
treed3333eb5b137cc188e2af86824986ee8154e38c4
parent4eca9b9db8a05f379e1750a53f84f67e8710095a (diff)
downloadgitlab-88c2505b05dbcfa41b9e0458d4f2ec7dcc6f8169.tar.gz
refactor: migrate legacy EE tests to pytest
-rw-r--r--tests/functional/api/test_boards.py18
-rw-r--r--tests/functional/api/test_epics.py31
-rw-r--r--tests/functional/api/test_gitlab.py17
-rw-r--r--tests/functional/api/test_groups.py11
-rw-r--r--tests/functional/api/test_issues.py16
-rw-r--r--tests/functional/api/test_merge_requests.py53
-rw-r--r--tests/functional/api/test_push_rules.py20
-rw-r--r--tests/functional/conftest.py7
-rwxr-xr-xtests/functional/ee-test.py165
9 files changed, 173 insertions, 165 deletions
diff --git a/tests/functional/api/test_boards.py b/tests/functional/api/test_boards.py
new file mode 100644
index 0000000..24c62ca
--- /dev/null
+++ b/tests/functional/api/test_boards.py
@@ -0,0 +1,18 @@
+def test_project_boards(project):
+ assert not project.boards.list()
+
+ board = project.boards.create({"name": "testboard"})
+ board = project.boards.get(board.id)
+
+ project.boards.delete(board.id)
+ assert not project.boards.list()
+
+
+def test_group_boards(group):
+ assert not group.boards.list()
+
+ board = group.boards.create({"name": "testboard"})
+ board = group.boards.get(board.id)
+
+ group.boards.delete(board.id)
+ assert not group.boards.list()
diff --git a/tests/functional/api/test_epics.py b/tests/functional/api/test_epics.py
new file mode 100644
index 0000000..67b9d38
--- /dev/null
+++ b/tests/functional/api/test_epics.py
@@ -0,0 +1,31 @@
+import pytest
+
+
+def test_epics(group):
+ epic = group.epics.create({"title": "Test epic"})
+ epic.title = "Fixed title"
+ epic.labels = ["label1", "label2"]
+ epic.save()
+
+ epic = group.epics.get(epic.iid)
+ assert epic.title == "Fixed title"
+ assert epic.labels == ["label1", "label2"]
+ assert group.epics.list()
+
+
+@pytest.mark.xfail(reason="404 on issue.id")
+def test_epic_issues(epic, issue):
+ assert not epic.issues.list()
+
+ epic_issue = epic.issues.create({"issue_id": issue.id})
+ assert epic.issues.list()
+
+ epic_issue.delete()
+ assert not epic.issues.list()
+
+
+def test_epic_notes(epic):
+ assert not epic.notes.list()
+
+ epic.notes.create({"body": "Test note"})
+ assert epic.notes.list()
diff --git a/tests/functional/api/test_gitlab.py b/tests/functional/api/test_gitlab.py
index d81f4d8..dbc001b 100644
--- a/tests/functional/api/test_gitlab.py
+++ b/tests/functional/api/test_gitlab.py
@@ -82,6 +82,23 @@ def test_sidekiq_compound_metrics(gl):
assert "queues" in out
+def test_geo_nodes(gl):
+ # Very basic geo nodes tests because we only have 1 node.
+ nodes = gl.geonodes.list()
+ assert isinstance(nodes, list)
+
+ status = gl.geonodes.status()
+ assert isinstance(status, list)
+
+
+def test_gitlab_license(gl):
+ license = gl.get_license()
+ assert "user_limit" in license
+
+ with pytest.raises(gitlab.GitlabLicenseError, match="The license key is invalid."):
+ gl.set_license("dummy key")
+
+
def test_gitlab_settings(gl):
settings = gl.settings.get()
settings.default_projects_limit = 42
diff --git a/tests/functional/api/test_groups.py b/tests/functional/api/test_groups.py
index 7688273..e414eda 100644
--- a/tests/functional/api/test_groups.py
+++ b/tests/functional/api/test_groups.py
@@ -138,6 +138,17 @@ def test_group_labels(group):
assert label not in group.labels.list()
+@pytest.mark.xfail(reason="/ldap/groups endpoint is gone")
+def test_group_ldap_links(gl, group):
+ ldap_cn = "common-name"
+ ldap_provider = "ldap-provider"
+ assert gl.ldapgroups.list()
+
+ group.add_ldap_group_link(ldap_cn, 30, ldap_provider)
+ group.ldap_sync()
+ group.delete_ldap_group_link(ldap_cn)
+
+
def test_group_notification_settings(group):
settings = group.notificationsettings.get()
settings.level = "disabled"
diff --git a/tests/functional/api/test_issues.py b/tests/functional/api/test_issues.py
index ba8b0e7..171a0d5 100644
--- a/tests/functional/api/test_issues.py
+++ b/tests/functional/api/test_issues.py
@@ -50,6 +50,22 @@ def test_issue_labels(project, issue):
assert issue not in project.issues.list(labels="None")
+def test_issue_links(project, issue):
+ linked_issue = project.issues.create({"title": "Linked issue"})
+ source_issue, target_issue = issue.links.create(
+ {"target_project_id": project.id, "target_issue_iid": linked_issue.iid}
+ )
+ assert source_issue == issue
+ assert target_issue == linked_issue
+
+ links = issue.links.list()
+ assert links
+
+ link_id = links[0].issue_link_id
+ issue.links.delete(link_id)
+ assert not issue.links.list()
+
+
def test_issue_events(issue):
events = issue.resourcelabelevents.list()
assert isinstance(events, list)
diff --git a/tests/functional/api/test_merge_requests.py b/tests/functional/api/test_merge_requests.py
index 53533c0..18ed296 100644
--- a/tests/functional/api/test_merge_requests.py
+++ b/tests/functional/api/test_merge_requests.py
@@ -117,6 +117,59 @@ def test_merge_request_rebase(project):
assert mr.rebase()
+@pytest.mark.xfail(reason="project /approvers endpoint is gone")
+def test_project_approvals(project):
+ mr = project.mergerequests.list()[0]
+ approval = project.approvals.get()
+
+ reset_value = approval.reset_approvals_on_push
+ approval.reset_approvals_on_push = not reset_value
+ approval.save()
+
+ approval = project.approvals.get()
+ assert reset_value != approval.reset_approvals_on_push
+
+ project.approvals.set_approvers([1], [])
+ approval = project.approvals.get()
+ assert approval.approvers[0]["user"]["id"] == 1
+
+ approval = mr.approvals.get()
+ approval.approvals_required = 2
+ approval.save()
+ approval = mr.approvals.get()
+ assert approval.approvals_required == 2
+
+ approval.approvals_required = 3
+ approval.save()
+ approval = mr.approvals.get()
+ assert approval.approvals_required == 3
+
+ mr.approvals.set_approvers(1, [1], [])
+ approval = mr.approvals.get()
+ assert approval.approvers[0]["user"]["id"] == 1
+
+
+def test_project_merge_request_approval_rules(group, project):
+ approval_rules = project.approvalrules.list(get_all=True)
+ assert not approval_rules
+
+ project.approvalrules.create(
+ {"name": "approval-rule", "approvals_required": 2, "group_ids": [group.id]}
+ )
+ approval_rules = project.approvalrules.list(get_all=True)
+ assert len(approval_rules) == 1
+ assert approval_rules[0].approvals_required == 2
+
+ approval_rules[0].save()
+ approval_rules = project.approvalrules.list(get_all=True)
+ assert len(approval_rules) == 1
+ assert approval_rules[0].approvals_required == 2
+
+ approval_rules[0].delete()
+ ars = project.approvalrules.list(get_all=True)
+ assert len(ars) == 0
+
+
def test_merge_request_reset_approvals(gitlab_url, project, wait_for_sidekiq):
bot = project.access_tokens.create({"name": "bot", "scopes": ["api"]})
bot_gitlab = gitlab.Gitlab(gitlab_url, private_token=bot.token)
diff --git a/tests/functional/api/test_push_rules.py b/tests/functional/api/test_push_rules.py
new file mode 100644
index 0000000..572b20d
--- /dev/null
+++ b/tests/functional/api/test_push_rules.py
@@ -0,0 +1,20 @@
+import pytest
+
+
+@pytest.mark.xfail(reason="need to relax RESTObject init for non-dict responses")
+def test_project_push_rules(project):
+ push_rules = project.pushrules.get()
+ assert not push_rules
+
+ push_rules = project.pushrules.create({"deny_delete_tag": True})
+ assert push_rules.deny_delete_tag
+
+ push_rules.deny_delete_tag = False
+ push_rules.save()
+
+ push_rules = project.pushrules.get()
+ assert push_rules
+ assert not push_rules.deny_delete_tag
+
+ push_rules.delete()
+ assert not push_rules
diff --git a/tests/functional/conftest.py b/tests/functional/conftest.py
index f494ac7..6acd9d5 100644
--- a/tests/functional/conftest.py
+++ b/tests/functional/conftest.py
@@ -530,6 +530,13 @@ def group_label(group):
@pytest.fixture(scope="module")
+def epic(group):
+ """Fixture for group epic API resource tests."""
+ _id = uuid.uuid4().hex
+ return group.epics.create({"title": f"epic-{_id}", "description": f"Epic {_id}"})
+
+
+@pytest.fixture(scope="module")
def variable(project):
"""Variable fixture for project variable API resource tests."""
_id = uuid.uuid4().hex
diff --git a/tests/functional/ee-test.py b/tests/functional/ee-test.py
index d11c29c..e69de29 100755
--- a/tests/functional/ee-test.py
+++ b/tests/functional/ee-test.py
@@ -1,165 +0,0 @@
-#!/usr/bin/env python
-
-import gitlab
-
-P1 = "root/project1"
-P2 = "root/project2"
-MR_P1 = 1
-I_P1 = 1
-I_P2 = 1
-EPIC_ISSUES = [4, 5]
-EPIC_NOTES = ["rubeus", "hagrid"]
-G1 = "group1"
-LDAP_CN = "app1"
-LDAP_PROVIDER = "ldapmain"
-
-
-def start_log(message):
- print(f"Testing {message}... ", end="")
-
-
-def end_log():
- print("OK")
-
-
-gl = gitlab.Gitlab.from_config("ee")
-project1 = gl.projects.get(P1)
-project2 = gl.projects.get(P2)
-issue_p1 = project1.issues.get(I_P1)
-issue_p2 = project2.issues.get(I_P2)
-group1 = gl.groups.get(G1)
-mr = project1.mergerequests.get(1)
-
-start_log("MR approvals")
-approval = project1.approvals.get()
-v = approval.reset_approvals_on_push
-approval.reset_approvals_on_push = not v
-approval.save()
-approval = project1.approvals.get()
-assert v != approval.reset_approvals_on_push
-project1.approvals.set_approvers(1, [1], [])
-approval = project1.approvals.get()
-assert approval.approvers[0]["user"]["id"] == 1
-
-approval = mr.approvals.get()
-approval.approvals_required = 2
-approval.save()
-approval = mr.approvals.get()
-assert approval.approvals_required == 2
-approval.approvals_required = 3
-approval.save()
-approval = mr.approvals.get()
-assert approval.approvals_required == 3
-mr.approvals.set_approvers(1, [1], [])
-approval = mr.approvals.get()
-assert approval.approvers[0]["user"]["id"] == 1
-
-ars = project1.approvalrules.list(get_all=True)
-assert len(ars) == 0
-project1.approvalrules.create(
- {"name": "approval-rule", "approvals_required": 1, "group_ids": [group1.id]}
-)
-ars = project1.approvalrules.list(get_all=True)
-assert len(ars) == 1
-assert ars[0].approvals_required == 2
-ars[0].save()
-ars = project1.approvalrules.list(get_all=True)
-assert len(ars) == 1
-assert ars[0].approvals_required == 2
-ars[0].delete()
-ars = project1.approvalrules.list(get_all=True)
-assert len(ars) == 0
-end_log()
-
-start_log("geo nodes")
-# very basic tests because we only have 1 node...
-nodes = gl.geonodes.list()
-status = gl.geonodes.status()
-end_log()
-
-start_log("issue links")
-# bit of cleanup just in case
-for link in issue_p1.links.list():
- issue_p1.links.delete(link.issue_link_id)
-
-src, dst = issue_p1.links.create({"target_project_id": P2, "target_issue_iid": I_P2})
-links = issue_p1.links.list()
-link_id = links[0].issue_link_id
-issue_p1.links.delete(link_id)
-end_log()
-
-start_log("LDAP links")
-# bit of cleanup just in case
-if hasattr(group1, "ldap_group_links"):
- for link in group1.ldap_group_links:
- group1.delete_ldap_group_link(link["cn"], link["provider"])
-assert gl.ldapgroups.list()
-group1.add_ldap_group_link(LDAP_CN, 30, LDAP_PROVIDER)
-group1.ldap_sync()
-group1.delete_ldap_group_link(LDAP_CN)
-end_log()
-
-start_log("boards")
-# bit of cleanup just in case
-for board in project1.boards.list():
- if board.name == "testboard":
- board.delete()
-board = project1.boards.create({"name": "testboard"})
-board = project1.boards.get(board.id)
-project1.boards.delete(board.id)
-
-for board in group1.boards.list():
- if board.name == "testboard":
- board.delete()
-board = group1.boards.create({"name": "testboard"})
-board = group1.boards.get(board.id)
-group1.boards.delete(board.id)
-end_log()
-
-start_log("push rules")
-pr = project1.pushrules.get()
-if pr:
- pr.delete()
-pr = project1.pushrules.create({"deny_delete_tag": True})
-pr.deny_delete_tag = False
-pr.save()
-pr = project1.pushrules.get()
-assert pr is not None
-assert pr.deny_delete_tag is False
-pr.delete()
-end_log()
-
-start_log("license")
-license = gl.get_license()
-assert "user_limit" in license
-try:
- gl.set_license("dummykey")
-except Exception as e:
- assert "The license key is invalid." in e.error_message
-end_log()
-
-start_log("epics")
-epic = group1.epics.create({"title": "Test epic"})
-epic.title = "Fixed title"
-epic.labels = ["label1", "label2"]
-epic.save()
-epic = group1.epics.get(epic.iid)
-assert epic.title == "Fixed title"
-assert len(group1.epics.list())
-
-# issues
-assert not epic.issues.list()
-for i in EPIC_ISSUES:
- epic.issues.create({"issue_id": i})
-assert len(EPIC_ISSUES) == len(epic.issues.list())
-for ei in epic.issues.list():
- ei.delete()
-
-# epic notes
-assert not epic.notes.list()
-for i in EPIC_NOTES:
- epic.notes.create({"body": i})
-assert len(EPIC_NOTES == len(epic.notes.list()))
-
-epic.delete()
-end_log()