66
77
88@pytest .fixture
9- def resp_deployment ():
9+ def resp_deployment_get ():
10+ with responses .RequestsMock ()as rsps :
11+ rsps .add (
12+ method = responses .GET ,
13+ url = "http://localhost/api/v4/projects/1/deployments/42" ,
14+ json = response_get_content ,
15+ content_type = "application/json" ,
16+ status = 200 ,
17+ )
18+ yield rsps
19+
20+
21+ @pytest .fixture
22+ def deployment (project ):
23+ return project .deployments .get (42 ,lazy = True )
24+
25+
26+ @pytest .fixture
27+ def resp_deployment_create ():
1028content = {"id" :42 ,"status" :"success" ,"ref" :"main" }
1129
1230with responses .RequestsMock ()as rsps :
@@ -31,7 +49,42 @@ def resp_deployment():
3149yield rsps
3250
3351
34- def test_deployment (project ,resp_deployment ):
52+ @pytest .fixture
53+ def resp_deployment_approval ():
54+ content = {
55+ "user" : {
56+ "id" :100 ,
57+ "username" :"security-user-1" ,
58+ "name" :"security user-1" ,
59+ "state" :"active" ,
60+ "avatar_url" :"https://www.gravatar.com/avatar/e130fcd3a1681f41a3de69d10841afa9?s=80&d=identicon" ,
61+ "web_url" :"http://localhost:3000/security-user-1" ,
62+ },
63+ "status" :"approved" ,
64+ "created_at" :"2022-02-24T20:22:30.097Z" ,
65+ "comment" :"Looks good to me" ,
66+ }
67+
68+ with responses .RequestsMock ()as rsps :
69+ rsps .add (
70+ method = responses .POST ,
71+ url = "http://localhost/api/v4/projects/1/deployments/42/approval" ,
72+ json = content ,
73+ content_type = "application/json" ,
74+ status = 200 ,
75+ )
76+ yield rsps
77+
78+
79+ def test_deployment_get (project ,resp_deployment_get ):
80+ deployment = project .deployments .get (42 )
81+ assert deployment .id == 42
82+ assert deployment .iid == 2
83+ assert deployment .status == "success"
84+ assert deployment .ref == "main"
85+
86+
87+ def test_deployment_create (project ,resp_deployment_create ):
3588deployment = project .deployments .create (
3689 {
3790"environment" :"Test" ,
@@ -48,3 +101,80 @@ def test_deployment(project, resp_deployment):
48101deployment .status = "failed"
49102deployment .save ()
50103assert deployment .status == "failed"
104+
105+
106+ def test_deployment_approval (deployment ,resp_deployment_approval )-> None :
107+ result = deployment .approval (status = "approved" )
108+ assert result ["status" ]== "approved"
109+ assert result ["comment" ]== "Looks good to me"
110+
111+
112+ response_get_content = {
113+ "id" :42 ,
114+ "iid" :2 ,
115+ "ref" :"main" ,
116+ "sha" :"a91957a858320c0e17f3a0eca7cfacbff50ea29a" ,
117+ "created_at" :"2016-08-11T11:32:35.444Z" ,
118+ "updated_at" :"2016-08-11T11:34:01.123Z" ,
119+ "status" :"success" ,
120+ "user" : {
121+ "name" :"Administrator" ,
122+ "username" :"root" ,
123+ "id" :1 ,
124+ "state" :"active" ,
125+ "avatar_url" :"http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon" ,
126+ "web_url" :"http://localhost:3000/root" ,
127+ },
128+ "environment" : {
129+ "id" :9 ,
130+ "name" :"production" ,
131+ "external_url" :"https://about.gitlab.com" ,
132+ },
133+ "deployable" : {
134+ "id" :664 ,
135+ "status" :"success" ,
136+ "stage" :"deploy" ,
137+ "name" :"deploy" ,
138+ "ref" :"main" ,
139+ "tag" :False ,
140+ "coverage" :None ,
141+ "created_at" :"2016-08-11T11:32:24.456Z" ,
142+ "started_at" :None ,
143+ "finished_at" :"2016-08-11T11:32:35.145Z" ,
144+ "user" : {
145+ "id" :1 ,
146+ "name" :"Administrator" ,
147+ "username" :"root" ,
148+ "state" :"active" ,
149+ "avatar_url" :"http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon" ,
150+ "web_url" :"http://gitlab.dev/root" ,
151+ "created_at" :"2015-12-21T13:14:24.077Z" ,
152+ "bio" :None ,
153+ "location" :None ,
154+ "skype" :"" ,
155+ "linkedin" :"" ,
156+ "twitter" :"" ,
157+ "website_url" :"" ,
158+ "organization" :"" ,
159+ },
160+ "commit" : {
161+ "id" :"a91957a858320c0e17f3a0eca7cfacbff50ea29a" ,
162+ "short_id" :"a91957a8" ,
163+ "title" :"Merge branch 'rename-readme' into 'main'\r " ,
164+ "author_name" :"Administrator" ,
165+ "author_email" :"admin@example.com" ,
166+ "created_at" :"2016-08-11T13:28:26.000+02:00" ,
167+ "message" :"Merge branch 'rename-readme' into 'main'\r \n \r \n Rename README\r \n \r \n \r \n \r \n See merge request !2" ,
168+ },
169+ "pipeline" : {
170+ "created_at" :"2016-08-11T07:43:52.143Z" ,
171+ "id" :42 ,
172+ "ref" :"main" ,
173+ "sha" :"a91957a858320c0e17f3a0eca7cfacbff50ea29a" ,
174+ "status" :"success" ,
175+ "updated_at" :"2016-08-11T07:43:52.143Z" ,
176+ "web_url" :"http://gitlab.dev/root/project/pipelines/5" ,
177+ },
178+ "runner" :None ,
179+ },
180+ }