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' }, )
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', )
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
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