def test_generate_cloudformation_args(self): """Test generate cloudformation args.""" stack_name = "mystack" template_url = "http://fake.s3url.com/blah.json" template_body = '{"fake_body": "woot"}' std_args = { "stack_name": stack_name, "parameters": [], "tags": [], "template": Template(url=template_url) } std_return = { "StackName": stack_name, "Parameters": [], "Tags": [], "Capabilities": DEFAULT_CAPABILITIES, "TemplateURL": template_url } result = generate_cloudformation_args(**std_args) self.assertEqual(result, std_return) result = generate_cloudformation_args(service_role="FakeRole", **std_args) service_role_result = copy.deepcopy(std_return) service_role_result["RoleARN"] = "FakeRole" self.assertEqual(result, service_role_result) result = generate_cloudformation_args(change_set_name="MyChanges", **std_args) change_set_result = copy.deepcopy(std_return) change_set_result["ChangeSetName"] = "MyChanges" self.assertEqual(result, change_set_result) # Check stack policy stack_policy = Template(body="{}") result = generate_cloudformation_args(stack_policy=stack_policy, **std_args) stack_policy_result = copy.deepcopy(std_return) stack_policy_result["StackPolicyBody"] = "{}" self.assertEqual(result, stack_policy_result) # If not TemplateURL is provided, use TemplateBody std_args["template"] = Template(body=template_body) template_body_result = copy.deepcopy(std_return) del template_body_result["TemplateURL"] template_body_result["TemplateBody"] = template_body result = generate_cloudformation_args(**std_args) self.assertEqual(result, template_body_result)
def test_create_stack_no_changeset(self): """Test create_stack, no changeset, template url.""" stack_name = "fake_stack" template = Template(url="http://fake.template.url.com/") parameters = [] tags = [] expected_args = generate_cloudformation_args(stack_name, parameters, tags, template) expected_args["EnableTerminationProtection"] = False self.stubber.add_response("create_stack", {"StackId": stack_name}, expected_args) with self.stubber: self.provider.create_stack(stack_name, template, parameters, tags) self.stubber.assert_no_pending_responses()