@@ -257,6 +257,51 @@ def resp_get_active_services(url, request):
257
257
return response (200 , content , headers , None , 5 , request )
258
258
259
259
260
+ @urlmatch (
261
+ scheme = "http" ,
262
+ netloc = "localhost" ,
263
+ path = "/api/v4/projects/1/pipeline_schedules$" ,
264
+ method = "post" ,
265
+ )
266
+ def resp_create_project_pipeline_schedule (url , request ):
267
+ """Mock for creating project pipeline Schedules POST response."""
268
+ content = """{
269
+ "id": 14,
270
+ "description": "Build packages",
271
+ "ref": "master",
272
+ "cron": "0 1 * * 5",
273
+ "cron_timezone": "UTC",
274
+ "next_run_at": "2017-05-26T01:00:00.000Z",
275
+ "active": true,
276
+ "created_at": "2017-05-19T13:43:08.169Z",
277
+ "updated_at": "2017-05-19T13:43:08.169Z",
278
+ "last_pipeline": null,
279
+ "owner": {
280
+ "name": "Administrator",
281
+ "username": "root",
282
+ "id": 1,
283
+ "state": "active",
284
+ "avatar_url": "http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
285
+ "web_url": "https://gitlab.example.com/root"
286
+ }
287
+ }"""
288
+ content = content .encode ("utf-8" )
289
+ return response (200 , content , headers , None , 5 , request )
290
+
291
+
292
+ @urlmatch (
293
+ scheme = "http" ,
294
+ netloc = "localhost" ,
295
+ path = "/api/v4/projects/1/pipeline_schedules/14/play" ,
296
+ method = "post" ,
297
+ )
298
+ def resp_play_project_pipeline_schedule (url , request ):
299
+ """Mock for playing a project pipeline schedule POST response."""
300
+ content = """{"message": "201 Created"}"""
301
+ content = content .encode ("utf-8" )
302
+ return response (200 , content , headers , None , 5 , request )
303
+
304
+
260
305
class TestProject (unittest .TestCase ):
261
306
"""Base class for GitLab Project tests."""
262
307
@@ -480,3 +525,23 @@ def test_update_service(self):
480
525
service .issues_events = True
481
526
service .save ()
482
527
self .assertEqual (service .issues_events , True )
528
+
529
+
530
+ class TestProjectPipelineSchedule (TestProject ):
531
+ @with_httmock (
532
+ resp_create_project_pipeline_schedule , resp_play_project_pipeline_schedule
533
+ )
534
+ def test_project_pipeline_schedule_play (self ):
535
+ description = "Build packages"
536
+ cronline = "0 1 * * 5"
537
+ sched = self .project .pipelineschedules .create (
538
+ {"ref" : "master" , "description" : description , "cron" : cronline }
539
+ )
540
+ self .assertIsNotNone (sched )
541
+ self .assertEqual (description , sched .description )
542
+ self .assertEqual (cronline , sched .cron )
543
+
544
+ play_result = sched .play ()
545
+ self .assertIsNotNone (play_result )
546
+ self .assertIn ("message" , play_result )
547
+ self .assertEqual ("201 Created" , play_result ["message" ])
0 commit comments