|
1 | | -#!/usr/bin/env python |
2 | | - |
3 | | -import gitlab |
4 | | - |
5 | | -P1 = "root/project1" |
6 | | -P2 = "root/project2" |
7 | | -MR_P1 = 1 |
8 | | -I_P1 = 1 |
9 | | -I_P2 = 1 |
10 | | -EPIC_ISSUES = [4, 5] |
11 | | -EPIC_NOTES = ["rubeus", "hagrid"] |
12 | | -G1 = "group1" |
13 | | -LDAP_CN = "app1" |
14 | | -LDAP_PROVIDER = "ldapmain" |
15 | | - |
16 | | - |
17 | | -def start_log(message): |
18 | | - print(f"Testing {message}... ", end="") |
19 | | - |
20 | | - |
21 | | -def end_log(): |
22 | | - print("OK") |
23 | | - |
24 | | - |
25 | | -gl = gitlab.Gitlab.from_config("ee") |
26 | | -project1 = gl.projects.get(P1) |
27 | | -project2 = gl.projects.get(P2) |
28 | | -issue_p1 = project1.issues.get(I_P1) |
29 | | -issue_p2 = project2.issues.get(I_P2) |
30 | | -group1 = gl.groups.get(G1) |
31 | | -mr = project1.mergerequests.get(1) |
32 | | - |
33 | | -start_log("MR approvals") |
34 | | -approval = project1.approvals.get() |
35 | | -v = approval.reset_approvals_on_push |
36 | | -approval.reset_approvals_on_push = not v |
37 | | -approval.save() |
38 | | -approval = project1.approvals.get() |
39 | | -assert v != approval.reset_approvals_on_push |
40 | | -project1.approvals.set_approvers(1, [1], []) |
41 | | -approval = project1.approvals.get() |
42 | | -assert approval.approvers[0]["user"]["id"] == 1 |
43 | | - |
44 | | -approval = mr.approvals.get() |
45 | | -approval.approvals_required = 2 |
46 | | -approval.save() |
47 | | -approval = mr.approvals.get() |
48 | | -assert approval.approvals_required == 2 |
49 | | -approval.approvals_required = 3 |
50 | | -approval.save() |
51 | | -approval = mr.approvals.get() |
52 | | -assert approval.approvals_required == 3 |
53 | | -mr.approvals.set_approvers(1, [1], []) |
54 | | -approval = mr.approvals.get() |
55 | | -assert approval.approvers[0]["user"]["id"] == 1 |
56 | | - |
57 | | -ars = project1.approvalrules.list(get_all=True) |
58 | | -assert len(ars) == 0 |
59 | | -project1.approvalrules.create( |
60 | | - {"name": "approval-rule", "approvals_required": 1, "group_ids": [group1.id]} |
61 | | -) |
62 | | -ars = project1.approvalrules.list(get_all=True) |
63 | | -assert len(ars) == 1 |
64 | | -assert ars[0].approvals_required == 2 |
65 | | -ars[0].save() |
66 | | -ars = project1.approvalrules.list(get_all=True) |
67 | | -assert len(ars) == 1 |
68 | | -assert ars[0].approvals_required == 2 |
69 | | -ars[0].delete() |
70 | | -ars = project1.approvalrules.list(get_all=True) |
71 | | -assert len(ars) == 0 |
72 | | -end_log() |
73 | | - |
74 | | -start_log("geo nodes") |
75 | | -# very basic tests because we only have 1 node... |
76 | | -nodes = gl.geonodes.list() |
77 | | -status = gl.geonodes.status() |
78 | | -end_log() |
79 | | - |
80 | | -start_log("issue links") |
81 | | -# bit of cleanup just in case |
82 | | -for link in issue_p1.links.list(): |
83 | | - issue_p1.links.delete(link.issue_link_id) |
84 | | - |
85 | | -src, dst = issue_p1.links.create({"target_project_id": P2, "target_issue_iid": I_P2}) |
86 | | -links = issue_p1.links.list() |
87 | | -link_id = links[0].issue_link_id |
88 | | -issue_p1.links.delete(link_id) |
89 | | -end_log() |
90 | | - |
91 | | -start_log("LDAP links") |
92 | | -# bit of cleanup just in case |
93 | | -if hasattr(group1, "ldap_group_links"): |
94 | | - for link in group1.ldap_group_links: |
95 | | - group1.delete_ldap_group_link(link["cn"], link["provider"]) |
96 | | -assert gl.ldapgroups.list() |
97 | | -group1.add_ldap_group_link(LDAP_CN, 30, LDAP_PROVIDER) |
98 | | -group1.ldap_sync() |
99 | | -group1.delete_ldap_group_link(LDAP_CN) |
100 | | -end_log() |
101 | | - |
102 | | -start_log("boards") |
103 | | -# bit of cleanup just in case |
104 | | -for board in project1.boards.list(): |
105 | | - if board.name == "testboard": |
106 | | - board.delete() |
107 | | -board = project1.boards.create({"name": "testboard"}) |
108 | | -board = project1.boards.get(board.id) |
109 | | -project1.boards.delete(board.id) |
110 | | - |
111 | | -for board in group1.boards.list(): |
112 | | - if board.name == "testboard": |
113 | | - board.delete() |
114 | | -board = group1.boards.create({"name": "testboard"}) |
115 | | -board = group1.boards.get(board.id) |
116 | | -group1.boards.delete(board.id) |
117 | | -end_log() |
118 | | - |
119 | | -start_log("push rules") |
120 | | -pr = project1.pushrules.get() |
121 | | -if pr: |
122 | | - pr.delete() |
123 | | -pr = project1.pushrules.create({"deny_delete_tag": True}) |
124 | | -pr.deny_delete_tag = False |
125 | | -pr.save() |
126 | | -pr = project1.pushrules.get() |
127 | | -assert pr is not None |
128 | | -assert pr.deny_delete_tag is False |
129 | | -pr.delete() |
130 | | -end_log() |
131 | | - |
132 | | -start_log("license") |
133 | | -license = gl.get_license() |
134 | | -assert "user_limit" in license |
135 | | -try: |
136 | | - gl.set_license("dummykey") |
137 | | -except Exception as e: |
138 | | - assert "The license key is invalid." in e.error_message |
139 | | -end_log() |
140 | | - |
141 | | -start_log("epics") |
142 | | -epic = group1.epics.create({"title": "Test epic"}) |
143 | | -epic.title = "Fixed title" |
144 | | -epic.labels = ["label1", "label2"] |
145 | | -epic.save() |
146 | | -epic = group1.epics.get(epic.iid) |
147 | | -assert epic.title == "Fixed title" |
148 | | -assert len(group1.epics.list()) |
149 | | - |
150 | | -# issues |
151 | | -assert not epic.issues.list() |
152 | | -for i in EPIC_ISSUES: |
153 | | - epic.issues.create({"issue_id": i}) |
154 | | -assert len(EPIC_ISSUES) == len(epic.issues.list()) |
155 | | -for ei in epic.issues.list(): |
156 | | - ei.delete() |
157 | | - |
158 | | -# epic notes |
159 | | -assert not epic.notes.list() |
160 | | -for i in EPIC_NOTES: |
161 | | - epic.notes.create({"body": i}) |
162 | | -assert len(EPIC_NOTES == len(epic.notes.list())) |
163 | | - |
164 | | -epic.delete() |
165 | | -end_log() |
0 commit comments