def test_invalid_template_json(placeboify): connection = placeboify.client('cloudformation') params = { 'StackName': 'ansible-test-wrong-json', 'TemplateBody': bad_json_tpl, } m = FakeModule(disable_rollback=False) with pytest.raises(Exception) as exc_info: cfn_module.create_stack(m, params, connection, default_events_limit) pytest.fail('Expected malformed JSON to have caused the call to fail') assert exc_info.match('FAIL') assert "ValidationError" in boto_exception(m.exit_args[0])
def test_missing_template_body(): m = FakeModule() with pytest.raises(Exception) as exc_info: cfn_module.create_stack(module=m, stack_params={}, cfn=None, events_limit=default_events_limit) pytest.fail('Expected module to have failed with no template') assert exc_info.match('FAIL') assert not m.exit_args assert "Either 'template', 'template_body' or 'template_url' is required when the stack does not exist." == m.exit_kwargs[ 'msg']
def test_basic_s3_stack(maybe_sleep, placeboify): connection = _create_wrapped_client(placeboify) params = { 'StackName': 'ansible-test-basic-yaml', 'TemplateBody': basic_yaml_tpl } m = FakeModule(disable_rollback=False) result = cfn_module.create_stack(m, params, connection, default_events_limit) assert result['changed'] assert len(result['events']) > 1 # require that the final recorded stack state was CREATE_COMPLETE # events are retrieved newest-first, so 0 is the latest assert 'CREATE_COMPLETE' in result['events'][0] connection.delete_stack(StackName='ansible-test-basic-yaml')
def test_client_request_token_s3_stack(maybe_sleep, placeboify): connection = placeboify.client('cloudformation') params = { 'StackName': 'ansible-test-client-request-token-yaml', 'TemplateBody': basic_yaml_tpl, 'ClientRequestToken': '3faf3fb5-b289-41fc-b940-44151828f6cf', } m = FakeModule(disable_rollback=False) result = cfn_module.create_stack(m, params, connection, default_events_limit) assert result['changed'] assert len(result['events']) > 1 # require that the final recorded stack state was CREATE_COMPLETE # events are retrieved newest-first, so 0 is the latest assert 'CREATE_COMPLETE' in result['events'][0] connection.delete_stack(StackName='ansible-test-client-request-token-yaml')
def test_on_create_failure_delete(maybe_sleep, placeboify): m = FakeModule( on_create_failure='DELETE', disable_rollback=False, ) connection = _create_wrapped_client(placeboify) params = { 'StackName': 'ansible-test-on-create-failure-delete', 'TemplateBody': failing_yaml_tpl } result = cfn_module.create_stack(m, params, connection, default_events_limit) assert result['changed'] assert result['failed'] assert len(result['events']) > 1 # require that the final recorded stack state was DELETE_COMPLETE # events are retrieved newest-first, so 0 is the latest assert 'DELETE_COMPLETE' in result['events'][0]
def test_on_create_failure_do_nothing(maybe_sleep, placeboify): m = FakeModule( on_create_failure='DO_NOTHING', disable_rollback=False, ) connection = placeboify.client('cloudformation') params = { 'StackName': 'ansible-test-on-create-failure-do-nothing', 'TemplateBody': failing_yaml_tpl } result = cfn_module.create_stack(m, params, connection, default_events_limit) assert result['changed'] assert result['failed'] assert len(result['events']) > 1 # require that the final recorded stack state was CREATE_FAILED # events are retrieved newest-first, so 0 is the latest assert 'CREATE_FAILED' in result['events'][0] connection.delete_stack(StackName=params['StackName'])