示例#1
0
 def test_can_handle_when_resource_changes_values(self):
     plan = self.determine_plan(
         models.S3BucketNotification(
             resource_name='test-s3-event',
             bucket='NEWBUCKET',
             events=['s3:ObjectCreated:*'],
             prefix=None,
             suffix=None,
             lambda_function=create_function_resource('function_name'),
         ))
     deployed = {
         'resources': [{
             'name': 'test-s3-event',
             'resource_type': 's3_event',
             'bucket': 'OLDBUCKET',
             'lambda_arn': 'lambda_arn',
         }]
     }
     config = FakeConfig(deployed)
     self.execute(plan, config)
     assert plan[-1] == models.APICall(
         method_name='disconnect_s3_bucket_from_lambda',
         params={
             'bucket': 'OLDBUCKET',
             'function_arn': 'lambda_arn'
         },
     )
示例#2
0
 def test_can_plan_s3_event(self):
     function = create_function_resource('function_name')
     bucket_event = models.S3BucketNotification(
         resource_name='function_name-s3event',
         bucket='mybucket',
         events=['s3:ObjectCreated:*'],
         prefix=None,
         suffix=None,
         lambda_function=function,
     )
     plan = self.determine_plan(bucket_event)
     self.assert_apicall_equals(
         plan[0],
         models.APICall(
             method_name='add_permission_for_s3_event',
             params={
                 'bucket': 'mybucket',
                 'function_arn': Variable('function_name_lambda_arn'),
             },
         ))
     self.assert_apicall_equals(
         plan[1],
         models.APICall(
             method_name='connect_s3_bucket_to_lambda',
             params={
                 'bucket': 'mybucket',
                 'function_arn': Variable('function_name_lambda_arn'),
                 'events': ['s3:ObjectCreated:*'],
                 'prefix': None,
                 'suffix': None,
             },
         ))
     assert plan[2] == models.RecordResourceValue(
         resource_type='s3_event',
         resource_name='function_name-s3event',
         name='bucket',
         value='mybucket',
     )
     assert plan[3] == models.RecordResourceVariable(
         resource_type='s3_event',
         resource_name='function_name-s3event',
         name='lambda_arn',
         variable_name='function_name_lambda_arn',
     )
示例#3
0
 def _create_bucket_notification(
     self,
     config,      # type: Config
     deployment,  # type: models.DeploymentPackage
     s3_event,    # type: app.S3EventConfig
     stage_name,  # type: str
 ):
     # type: (...) -> models.S3BucketNotification
     lambda_function = self._create_lambda_model(
         config=config, deployment=deployment, name=s3_event.name,
         handler_name=s3_event.handler_string, stage_name=stage_name
     )
     resource_name = s3_event.name + '-s3event'
     s3_bucket = models.S3BucketNotification(
         resource_name=resource_name,
         bucket=s3_event.bucket,
         prefix=s3_event.prefix,
         suffix=s3_event.suffix,
         events=s3_event.events,
         lambda_function=lambda_function,
     )
     return s3_bucket
示例#4
0
 def test_no_sweeping_when_resource_value_unchanged(self):
     plan = self.determine_plan(
         models.S3BucketNotification(
             resource_name='test-s3-event',
             bucket='EXISTING-BUCKET',
             events=['s3:ObjectCreated:*'],
             prefix=None,
             suffix=None,
             lambda_function=create_function_resource('function_name'),
         ))
     deployed = {
         'resources': [{
             'name': 'test-s3-event',
             'resource_type': 's3_event',
             'bucket': 'EXISTING-BUCKET',
             'lambda_arn': 'lambda_arn',
         }]
     }
     config = FakeConfig(deployed)
     original_plan = plan[:]
     self.execute(plan, config)
     assert plan == original_plan