def test_add_s3_bucket_notification(self, aws_client): aws_client.return_value.get_bucket_notification_configuration.return_value = { 'LambdaFunctionConfigurations': [] } set_module_args({ 'region': 'us-east-2', 'lambda_function_arn': 'test-lambda-arn', 'bucket_name': 'test-lambda', 'event_name': 'test-id', 'events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*'], 'state': 'present', 'prefix': '/images', 'suffix': '.jpg' }) with pytest.raises(AnsibleExitJson) as context: s3_bucket_notification.main() result = context.value.args[0] assert result['changed'] is True assert aws_client.return_value.get_bucket_notification_configuration.call_count == 1 aws_client.return_value.put_bucket_notification_configuration.assert_called_with( Bucket='test-lambda', NotificationConfiguration={ 'LambdaFunctionConfigurations': [{ 'Id': 'test-id', 'LambdaFunctionArn': 'test-lambda-arn', 'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*'], 'Filter': { 'Key': { 'FilterRules': [{ 'Name': 'Prefix', 'Value': '/images' }, { 'Name': 'Suffix', 'Value': '.jpg' }] } } }] })
def test_module_fail_when_required_args_missing(self): with pytest.raises(AnsibleFailJson): set_module_args({}) s3_bucket_notification.main()