| 
									
										
										
										
											2021-10-04 13:47:40 +00:00
										 |  |  | import boto3 | 
					
						
							|  |  |  | import json | 
					
						
							| 
									
										
										
										
											2021-10-18 19:44:29 +00:00
										 |  |  | import sure  # noqa # pylint: disable=unused-import | 
					
						
							| 
									
										
										
										
											2021-10-04 13:47:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from moto import mock_cloudformation, mock_datapipeline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @mock_cloudformation | 
					
						
							|  |  |  | @mock_datapipeline | 
					
						
							|  |  |  | def test_datapipeline(): | 
					
						
							|  |  |  |     dp_template = { | 
					
						
							|  |  |  |         "AWSTemplateFormatVersion": "2010-09-09", | 
					
						
							|  |  |  |         "Resources": { | 
					
						
							|  |  |  |             "dataPipeline": { | 
					
						
							|  |  |  |                 "Properties": { | 
					
						
							|  |  |  |                     "Activate": "true", | 
					
						
							|  |  |  |                     "Name": "testDataPipeline", | 
					
						
							|  |  |  |                     "PipelineObjects": [ | 
					
						
							|  |  |  |                         { | 
					
						
							|  |  |  |                             "Fields": [ | 
					
						
							|  |  |  |                                 { | 
					
						
							|  |  |  |                                     "Key": "failureAndRerunMode", | 
					
						
							|  |  |  |                                     "StringValue": "CASCADE", | 
					
						
							|  |  |  |                                 }, | 
					
						
							|  |  |  |                                 {"Key": "scheduleType", "StringValue": "cron"}, | 
					
						
							|  |  |  |                                 {"Key": "schedule", "RefValue": "DefaultSchedule"}, | 
					
						
							|  |  |  |                                 { | 
					
						
							|  |  |  |                                     "Key": "pipelineLogUri", | 
					
						
							|  |  |  |                                     "StringValue": "s3://bucket/logs", | 
					
						
							|  |  |  |                                 }, | 
					
						
							|  |  |  |                                 {"Key": "type", "StringValue": "Default"}, | 
					
						
							|  |  |  |                             ], | 
					
						
							|  |  |  |                             "Id": "Default", | 
					
						
							|  |  |  |                             "Name": "Default", | 
					
						
							|  |  |  |                         }, | 
					
						
							|  |  |  |                         { | 
					
						
							|  |  |  |                             "Fields": [ | 
					
						
							|  |  |  |                                 { | 
					
						
							|  |  |  |                                     "Key": "startDateTime", | 
					
						
							|  |  |  |                                     "StringValue": "1970-01-01T01:00:00", | 
					
						
							|  |  |  |                                 }, | 
					
						
							|  |  |  |                                 {"Key": "period", "StringValue": "1 Day"}, | 
					
						
							|  |  |  |                                 {"Key": "type", "StringValue": "Schedule"}, | 
					
						
							|  |  |  |                             ], | 
					
						
							|  |  |  |                             "Id": "DefaultSchedule", | 
					
						
							|  |  |  |                             "Name": "RunOnce", | 
					
						
							|  |  |  |                         }, | 
					
						
							|  |  |  |                     ], | 
					
						
							|  |  |  |                     "PipelineTags": [], | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 "Type": "AWS::DataPipeline::Pipeline", | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     cf = boto3.client("cloudformation", region_name="us-east-1") | 
					
						
							|  |  |  |     template_json = json.dumps(dp_template) | 
					
						
							|  |  |  |     cf.create_stack(StackName="test_stack", TemplateBody=template_json) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dp = boto3.client("datapipeline", region_name="us-east-1") | 
					
						
							|  |  |  |     data_pipelines = dp.list_pipelines()["pipelineIdList"] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     data_pipelines.should.have.length_of(1) | 
					
						
							|  |  |  |     data_pipelines[0]["name"].should.equal("testDataPipeline") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     stack_resources = cf.list_stack_resources(StackName="test_stack")[ | 
					
						
							|  |  |  |         "StackResourceSummaries" | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  |     stack_resources.should.have.length_of(1) | 
					
						
							|  |  |  |     stack_resources[0]["PhysicalResourceId"].should.equal(data_pipelines[0]["id"]) |