|
1 | | -#!/usr/bin/env python |
2 | | - |
3 | | -importgitlab |
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 | | -defstart_log(message): |
18 | | -print(f"Testing{message}... ",end="") |
19 | | - |
20 | | - |
21 | | -defend_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=notv |
37 | | -approval.save() |
38 | | -approval=project1.approvals.get() |
39 | | -assertv!=approval.reset_approvals_on_push |
40 | | -project1.approvals.set_approvers(1, [1], []) |
41 | | -approval=project1.approvals.get() |
42 | | -assertapproval.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 | | -assertapproval.approvals_required==2 |
49 | | -approval.approvals_required=3 |
50 | | -approval.save() |
51 | | -approval=mr.approvals.get() |
52 | | -assertapproval.approvals_required==3 |
53 | | -mr.approvals.set_approvers(1, [1], []) |
54 | | -approval=mr.approvals.get() |
55 | | -assertapproval.approvers[0]["user"]["id"]==1 |
56 | | - |
57 | | -ars=project1.approvalrules.list(get_all=True) |
58 | | -assertlen(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 | | -assertlen(ars)==1 |
64 | | -assertars[0].approvals_required==2 |
65 | | -ars[0].save() |
66 | | -ars=project1.approvalrules.list(get_all=True) |
67 | | -assertlen(ars)==1 |
68 | | -assertars[0].approvals_required==2 |
69 | | -ars[0].delete() |
70 | | -ars=project1.approvalrules.list(get_all=True) |
71 | | -assertlen(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 | | -forlinkinissue_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 | | -ifhasattr(group1,"ldap_group_links"): |
94 | | -forlinkingroup1.ldap_group_links: |
95 | | -group1.delete_ldap_group_link(link["cn"],link["provider"]) |
96 | | -assertgl.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 | | -forboardinproject1.boards.list(): |
105 | | -ifboard.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 | | -forboardingroup1.boards.list(): |
112 | | -ifboard.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 | | -ifpr: |
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 | | -assertprisnotNone |
128 | | -assertpr.deny_delete_tagisFalse |
129 | | -pr.delete() |
130 | | -end_log() |
131 | | - |
132 | | -start_log("license") |
133 | | -license=gl.get_license() |
134 | | -assert"user_limit"inlicense |
135 | | -try: |
136 | | -gl.set_license("dummykey") |
137 | | -exceptExceptionase: |
138 | | -assert"The license key is invalid."ine.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 | | -assertepic.title=="Fixed title" |
148 | | -assertlen(group1.epics.list()) |
149 | | - |
150 | | -# issues |
151 | | -assertnotepic.issues.list() |
152 | | -foriinEPIC_ISSUES: |
153 | | -epic.issues.create({"issue_id":i}) |
154 | | -assertlen(EPIC_ISSUES)==len(epic.issues.list()) |
155 | | -foreiinepic.issues.list(): |
156 | | -ei.delete() |
157 | | - |
158 | | -# epic notes |
159 | | -assertnotepic.notes.list() |
160 | | -foriinEPIC_NOTES: |
161 | | -epic.notes.create({"body":i}) |
162 | | -assertlen(EPIC_NOTES==len(epic.notes.list())) |
163 | | - |
164 | | -epic.delete() |
165 | | -end_log() |