|
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