Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9f6335f

Browse files
committed
test: add test_project_merge_request_approvals.py
1 parent449fc26 commit9f6335f

File tree

2 files changed

+296
-2
lines changed

2 files changed

+296
-2
lines changed
Lines changed: 294 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,294 @@
1+
"""
2+
Gitlab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html
3+
"""
4+
5+
importpytest
6+
importresponses
7+
importcopy
8+
9+
10+
approval_rule_id=1
11+
approval_rule_name="security"
12+
approvals_required=3
13+
user_ids= [5,50]
14+
group_ids= [5]
15+
16+
new_approval_rule_name="new approval rule"
17+
new_approval_rule_user_ids=user_ids
18+
new_approval_rule_approvals_required=2
19+
20+
updated_approval_rule_user_ids= [5]
21+
updated_approval_rule_approvals_required=1
22+
23+
24+
@pytest.fixture
25+
defresp_snippet():
26+
merge_request_content= [
27+
{
28+
"id":1,
29+
"iid":1,
30+
"project_id":1,
31+
"title":"test1",
32+
"description":"fixed login page css paddings",
33+
"state":"merged",
34+
"merged_by": {
35+
"id":87854,
36+
"name":"Douwe Maan",
37+
"username":"DouweM",
38+
"state":"active",
39+
"avatar_url":"https://gitlab.example.com/uploads/-/system/user/avatar/87854/avatar.png",
40+
"web_url":"https://gitlab.com/DouweM",
41+
},
42+
"merged_at":"2018-09-07T11:16:17.520Z",
43+
"closed_by":None,
44+
"closed_at":None,
45+
"created_at":"2017-04-29T08:46:00Z",
46+
"updated_at":"2017-04-29T08:46:00Z",
47+
"target_branch":"master",
48+
"source_branch":"test1",
49+
"upvotes":0,
50+
"downvotes":0,
51+
"author": {
52+
"id":1,
53+
"name":"Administrator",
54+
"username":"admin",
55+
"state":"active",
56+
"avatar_url":None,
57+
"web_url":"https://gitlab.example.com/admin",
58+
},
59+
"assignee": {
60+
"id":1,
61+
"name":"Administrator",
62+
"username":"admin",
63+
"state":"active",
64+
"avatar_url":None,
65+
"web_url":"https://gitlab.example.com/admin",
66+
},
67+
"assignees": [
68+
{
69+
"name":"Miss Monserrate Beier",
70+
"username":"axel.block",
71+
"id":12,
72+
"state":"active",
73+
"avatar_url":"http://www.gravatar.com/avatar/46f6f7dc858ada7be1853f7fb96e81da?s=80&d=identicon",
74+
"web_url":"https://gitlab.example.com/axel.block",
75+
}
76+
],
77+
"source_project_id":2,
78+
"target_project_id":3,
79+
"labels": ["Community contribution","Manage"],
80+
"work_in_progress":None,
81+
"milestone": {
82+
"id":5,
83+
"iid":1,
84+
"project_id":3,
85+
"title":"v2.0",
86+
"description":"Assumenda aut placeat expedita exercitationem labore sunt enim earum.",
87+
"state":"closed",
88+
"created_at":"2015-02-02T19:49:26.013Z",
89+
"updated_at":"2015-02-02T19:49:26.013Z",
90+
"due_date":"2018-09-22",
91+
"start_date":"2018-08-08",
92+
"web_url":"https://gitlab.example.com/my-group/my-project/milestones/1",
93+
},
94+
"merge_when_pipeline_succeeds":None,
95+
"merge_status":"can_be_merged",
96+
"sha":"8888888888888888888888888888888888888888",
97+
"merge_commit_sha":None,
98+
"squash_commit_sha":None,
99+
"user_notes_count":1,
100+
"discussion_locked":None,
101+
"should_remove_source_branch":True,
102+
"force_remove_source_branch":False,
103+
"allow_collaboration":False,
104+
"allow_maintainer_to_push":False,
105+
"web_url":"http://gitlab.example.com/my-group/my-project/merge_requests/1",
106+
"references": {
107+
"short":"!1",
108+
"relative":"my-group/my-project!1",
109+
"full":"my-group/my-project!1",
110+
},
111+
"time_stats": {
112+
"time_estimate":0,
113+
"total_time_spent":0,
114+
"human_time_estimate":None,
115+
"human_total_time_spent":None,
116+
},
117+
"squash":False,
118+
"task_completion_status": {"count":0,"completed_count":0},
119+
}
120+
]
121+
mr_ars_content= [
122+
{
123+
"id":approval_rule_id,
124+
"name":approval_rule_name,
125+
"rule_type":"regular",
126+
"eligible_approvers": [
127+
{
128+
"id":user_ids[0],
129+
"name":"John Doe",
130+
"username":"jdoe",
131+
"state":"active",
132+
"avatar_url":"https://www.gravatar.com/avatar/0?s=80&d=identicon",
133+
"web_url":"http://localhost/jdoe",
134+
},
135+
{
136+
"id":user_ids[1],
137+
"name":"Group Member 1",
138+
"username":"group_member_1",
139+
"state":"active",
140+
"avatar_url":"https://www.gravatar.com/avatar/0?s=80&d=identicon",
141+
"web_url":"http://localhost/group_member_1",
142+
},
143+
],
144+
"approvals_required":approvals_required,
145+
"source_rule":None,
146+
"users": [
147+
{
148+
"id":5,
149+
"name":"John Doe",
150+
"username":"jdoe",
151+
"state":"active",
152+
"avatar_url":"https://www.gravatar.com/avatar/0?s=80&d=identicon",
153+
"web_url":"http://localhost/jdoe",
154+
}
155+
],
156+
"groups": [
157+
{
158+
"id":5,
159+
"name":"group1",
160+
"path":"group1",
161+
"description":"",
162+
"visibility":"public",
163+
"lfs_enabled":False,
164+
"avatar_url":None,
165+
"web_url":"http://localhost/groups/group1",
166+
"request_access_enabled":False,
167+
"full_name":"group1",
168+
"full_path":"group1",
169+
"parent_id":None,
170+
"ldap_cn":None,
171+
"ldap_access":None,
172+
}
173+
],
174+
"contains_hidden_groups":False,
175+
"overridden":False,
176+
}
177+
]
178+
179+
withresponses.RequestsMock(assert_all_requests_are_fired=False)asrsps:
180+
rsps.add(
181+
method=responses.GET,
182+
url="http://localhost/api/v4/projects/1/merge_requests",
183+
json=merge_request_content,
184+
content_type="application/json",
185+
status=200,
186+
)
187+
rsps.add(
188+
method=responses.GET,
189+
url="http://localhost/api/v4/projects/1/merge_requests/1",
190+
json=merge_request_content[0],
191+
content_type="application/json",
192+
status=200,
193+
)
194+
rsps.add(
195+
method=responses.GET,
196+
url="http://localhost/api/v4/projects/1/merge_requests/1/approval_rules",
197+
json=mr_ars_content,
198+
content_type="application/json",
199+
status=200,
200+
)
201+
202+
new_mr_ars_content=dict(mr_ars_content[0])
203+
new_mr_ars_content["name"]=new_approval_rule_name
204+
new_mr_ars_content["approvals_required"]=new_approval_rule_approvals_required
205+
206+
rsps.add(
207+
method=responses.POST,
208+
url="http://localhost/api/v4/projects/1/merge_requests/1/approval_rules",
209+
json=new_mr_ars_content,
210+
content_type="application/json",
211+
status=200,
212+
)
213+
214+
updated_mr_ars_content=copy.deepcopy(mr_ars_content[0])
215+
updated_mr_ars_content["eligible_approvers"]= [
216+
mr_ars_content[0]["eligible_approvers"][0]
217+
]
218+
219+
updated_mr_ars_content[
220+
"approvals_required"
221+
]=updated_approval_rule_approvals_required
222+
223+
rsps.add(
224+
method=responses.PUT,
225+
url="http://localhost/api/v4/projects/1/merge_requests/1/approval_rules/1",
226+
json=updated_mr_ars_content,
227+
content_type="application/json",
228+
status=200,
229+
)
230+
yieldrsps
231+
232+
233+
deftest_list_merge_request_approval_rules(project,resp_snippet):
234+
approval_rules=project.mergerequests.get(1).approval_rules.list()
235+
assertlen(approval_rules)==1
236+
assertapproval_rules[0].name==approval_rule_name
237+
assertapproval_rules[0].id==approval_rule_id
238+
239+
240+
deftest_update_merge_request_approvals_set_approvers(project,resp_snippet):
241+
approvals=project.mergerequests.get(1).approvals
242+
response=approvals.set_approvers(
243+
updated_approval_rule_approvals_required,
244+
approver_ids=updated_approval_rule_user_ids,
245+
approver_group_ids=group_ids,
246+
approval_rule_name=approval_rule_name,
247+
)
248+
249+
assertresponse.approvals_required==updated_approval_rule_approvals_required
250+
assertlen(response.eligible_approvers)==len(updated_approval_rule_user_ids)
251+
assertresponse.eligible_approvers[0]["id"]==updated_approval_rule_user_ids[0]
252+
assertresponse.name==approval_rule_name
253+
254+
255+
deftest_create_merge_request_approvals_set_approvers(project,resp_snippet):
256+
approvals=project.mergerequests.get(1).approvals
257+
response=approvals.set_approvers(
258+
new_approval_rule_approvals_required,
259+
approver_ids=new_approval_rule_user_ids,
260+
approver_group_ids=group_ids,
261+
approval_rule_name=new_approval_rule_name,
262+
)
263+
assertresponse.approvals_required==new_approval_rule_approvals_required
264+
assertlen(response.eligible_approvers)==len(new_approval_rule_user_ids)
265+
assertresponse.eligible_approvers[0]["id"]==new_approval_rule_user_ids[0]
266+
assertresponse.name==new_approval_rule_name
267+
268+
269+
deftest_create_merge_request_approval_rule(project,resp_snippet):
270+
approval_rules=project.mergerequests.get(1).approval_rules
271+
data= {
272+
"name":new_approval_rule_name,
273+
"approvals_required":new_approval_rule_approvals_required,
274+
"rule_type":"regular",
275+
"user_ids":new_approval_rule_user_ids,
276+
"group_ids":group_ids,
277+
}
278+
response=approval_rules.create(data)
279+
assertresponse.approvals_required==new_approval_rule_approvals_required
280+
assertlen(response.eligible_approvers)==len(new_approval_rule_user_ids)
281+
assertresponse.eligible_approvers[0]["id"]==new_approval_rule_user_ids[0]
282+
assertresponse.name==new_approval_rule_name
283+
284+
285+
deftest_update_merge_request_approval_rule(project,resp_snippet):
286+
approval_rules=project.mergerequests.get(1).approval_rules
287+
ar_1=approval_rules.list()[0]
288+
ar_1.user_ids=updated_approval_rule_user_ids
289+
ar_1.approvals_required=updated_approval_rule_approvals_required
290+
ar_1.save()
291+
292+
assertar_1.approvals_required==updated_approval_rule_approvals_required
293+
assertlen(ar_1.eligible_approvers)==len(updated_approval_rule_user_ids)
294+
assertar_1.eligible_approvers[0]["id"]==updated_approval_rule_user_ids[0]

‎gitlab/v4/objects/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3033,9 +3033,9 @@ def set_approvers(
30333033
ar.approvals_required=data["approvals_required"]
30343034
ar.group_ids=data["group_ids"]
30353035
ar.save()
3036-
return
3036+
returnar
30373037
""" if there was no rule matching the rule name, create a new one"""
3038-
approval_rules.create(data=data)
3038+
returnapproval_rules.create(data=data)
30393039

30403040

30413041
classProjectMergeRequestApprovalRule(SaveMixin,RESTObject):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp