@@ -257,6 +257,51 @@ def resp_get_active_services(url, request):
257257 return response (200 , content , headers , None , 5 , request )
258258
259259
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+
260305class TestProject (unittest .TestCase ):
261306 """Base class for GitLab Project tests."""
262307
@@ -480,3 +525,23 @@ def test_update_service(self):
480525 service .issues_events = True
481526 service .save ()
482527 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