Run black on moto & test directories.
This commit is contained in:
parent
c820395dbf
commit
96e5b1993d
507 changed files with 52541 additions and 47814 deletions
|
|
@ -9,11 +9,16 @@ import boto.s3.key
|
|||
import boto.cloudformation
|
||||
from boto.exception import BotoServerError
|
||||
import sure # noqa
|
||||
|
||||
# Ensure 'assert_raises' context manager support for Python 2.6
|
||||
import tests.backport_assert_raises # noqa
|
||||
from nose.tools import assert_raises
|
||||
|
||||
from moto import mock_cloudformation_deprecated, mock_s3_deprecated, mock_route53_deprecated
|
||||
from moto import (
|
||||
mock_cloudformation_deprecated,
|
||||
mock_s3_deprecated,
|
||||
mock_route53_deprecated,
|
||||
)
|
||||
from moto.cloudformation import cloudformation_backends
|
||||
|
||||
dummy_template = {
|
||||
|
|
@ -33,12 +38,7 @@ dummy_template3 = {
|
|||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Stack 3",
|
||||
"Resources": {
|
||||
"VPC": {
|
||||
"Properties": {
|
||||
"CidrBlock": "192.168.0.0/16",
|
||||
},
|
||||
"Type": "AWS::EC2::VPC"
|
||||
}
|
||||
"VPC": {"Properties": {"CidrBlock": "192.168.0.0/16"}, "Type": "AWS::EC2::VPC"}
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -50,24 +50,22 @@ dummy_template_json3 = json.dumps(dummy_template3)
|
|||
@mock_cloudformation_deprecated
|
||||
def test_create_stack():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
stack.stack_name.should.equal('test_stack')
|
||||
stack.get_template().should.equal({
|
||||
'GetTemplateResponse': {
|
||||
'GetTemplateResult': {
|
||||
'TemplateBody': dummy_template_json,
|
||||
'ResponseMetadata': {
|
||||
'RequestId': '2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE'
|
||||
stack.stack_name.should.equal("test_stack")
|
||||
stack.get_template().should.equal(
|
||||
{
|
||||
"GetTemplateResponse": {
|
||||
"GetTemplateResult": {
|
||||
"TemplateBody": dummy_template_json,
|
||||
"ResponseMetadata": {
|
||||
"RequestId": "2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE"
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
|
|
@ -77,44 +75,34 @@ def test_create_stack_hosted_zone_by_id():
|
|||
dummy_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Stack 1",
|
||||
"Parameters": {
|
||||
},
|
||||
"Parameters": {},
|
||||
"Resources": {
|
||||
"Bar": {
|
||||
"Type" : "AWS::Route53::HostedZone",
|
||||
"Properties" : {
|
||||
"Name" : "foo.bar.baz",
|
||||
}
|
||||
},
|
||||
"Type": "AWS::Route53::HostedZone",
|
||||
"Properties": {"Name": "foo.bar.baz"},
|
||||
}
|
||||
},
|
||||
}
|
||||
dummy_template2 = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Stack 2",
|
||||
"Parameters": {
|
||||
"ZoneId": { "Type": "String" }
|
||||
},
|
||||
"Parameters": {"ZoneId": {"Type": "String"}},
|
||||
"Resources": {
|
||||
"Foo": {
|
||||
"Properties": {
|
||||
"HostedZoneId": {"Ref": "ZoneId"},
|
||||
"RecordSets": []
|
||||
},
|
||||
"Type": "AWS::Route53::RecordSetGroup"
|
||||
"Properties": {"HostedZoneId": {"Ref": "ZoneId"}, "RecordSets": []},
|
||||
"Type": "AWS::Route53::RecordSetGroup",
|
||||
}
|
||||
},
|
||||
}
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=json.dumps(dummy_template),
|
||||
parameters={}.items()
|
||||
"test_stack", template_body=json.dumps(dummy_template), parameters={}.items()
|
||||
)
|
||||
r53_conn = boto.connect_route53()
|
||||
zone_id = r53_conn.get_zones()[0].id
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=json.dumps(dummy_template2),
|
||||
parameters={"ZoneId": zone_id}.items()
|
||||
parameters={"ZoneId": zone_id}.items(),
|
||||
)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
|
|
@ -139,62 +127,57 @@ def test_create_stack_with_notification_arn():
|
|||
conn.create_stack(
|
||||
"test_stack_with_notifications",
|
||||
template_body=dummy_template_json,
|
||||
notification_arns='arn:aws:sns:us-east-1:123456789012:fake-queue'
|
||||
notification_arns="arn:aws:sns:us-east-1:123456789012:fake-queue",
|
||||
)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
[n.value for n in stack.notification_arns].should.contain(
|
||||
'arn:aws:sns:us-east-1:123456789012:fake-queue')
|
||||
"arn:aws:sns:us-east-1:123456789012:fake-queue"
|
||||
)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
@mock_s3_deprecated
|
||||
def test_create_stack_from_s3_url():
|
||||
s3_conn = boto.s3.connect_to_region('us-west-1')
|
||||
s3_conn = boto.s3.connect_to_region("us-west-1")
|
||||
bucket = s3_conn.create_bucket("foobar")
|
||||
key = boto.s3.key.Key(bucket)
|
||||
key.key = "template-key"
|
||||
key.set_contents_from_string(dummy_template_json)
|
||||
key_url = key.generate_url(expires_in=0, query_auth=False)
|
||||
|
||||
conn = boto.cloudformation.connect_to_region('us-west-1')
|
||||
conn.create_stack('new-stack', template_url=key_url)
|
||||
conn = boto.cloudformation.connect_to_region("us-west-1")
|
||||
conn.create_stack("new-stack", template_url=key_url)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
stack.stack_name.should.equal('new-stack')
|
||||
stack.stack_name.should.equal("new-stack")
|
||||
stack.get_template().should.equal(
|
||||
{
|
||||
'GetTemplateResponse': {
|
||||
'GetTemplateResult': {
|
||||
'TemplateBody': dummy_template_json,
|
||||
'ResponseMetadata': {
|
||||
'RequestId': '2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE'
|
||||
}
|
||||
"GetTemplateResponse": {
|
||||
"GetTemplateResult": {
|
||||
"TemplateBody": dummy_template_json,
|
||||
"ResponseMetadata": {
|
||||
"RequestId": "2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
def test_describe_stack_by_name():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
stack = conn.describe_stacks("test_stack")[0]
|
||||
stack.stack_name.should.equal('test_stack')
|
||||
stack.stack_name.should.equal("test_stack")
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
def test_describe_stack_by_stack_id():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
stack = conn.describe_stacks("test_stack")[0]
|
||||
stack_by_id = conn.describe_stacks(stack.stack_id)[0]
|
||||
|
|
@ -205,10 +188,7 @@ def test_describe_stack_by_stack_id():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_describe_deleted_stack():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
stack = conn.describe_stacks("test_stack")[0]
|
||||
stack_id = stack.stack_id
|
||||
|
|
@ -222,36 +202,28 @@ def test_describe_deleted_stack():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_get_template_by_name():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
template = conn.get_template("test_stack")
|
||||
template.should.equal({
|
||||
'GetTemplateResponse': {
|
||||
'GetTemplateResult': {
|
||||
'TemplateBody': dummy_template_json,
|
||||
'ResponseMetadata': {
|
||||
'RequestId': '2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE'
|
||||
template.should.equal(
|
||||
{
|
||||
"GetTemplateResponse": {
|
||||
"GetTemplateResult": {
|
||||
"TemplateBody": dummy_template_json,
|
||||
"ResponseMetadata": {
|
||||
"RequestId": "2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE"
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
def test_list_stacks():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack(
|
||||
"test_stack2",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
conn.create_stack("test_stack2", template_body=dummy_template_json)
|
||||
|
||||
stacks = conn.list_stacks()
|
||||
stacks.should.have.length_of(2)
|
||||
|
|
@ -261,10 +233,7 @@ def test_list_stacks():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_delete_stack_by_name():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
conn.describe_stacks().should.have.length_of(1)
|
||||
conn.delete_stack("test_stack")
|
||||
|
|
@ -274,10 +243,7 @@ def test_delete_stack_by_name():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_delete_stack_by_id():
|
||||
conn = boto.connect_cloudformation()
|
||||
stack_id = conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
stack_id = conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
conn.describe_stacks().should.have.length_of(1)
|
||||
conn.delete_stack(stack_id)
|
||||
|
|
@ -291,10 +257,7 @@ def test_delete_stack_by_id():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_delete_stack_with_resource_missing_delete_attr():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json3,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json3)
|
||||
|
||||
conn.describe_stacks().should.have.length_of(1)
|
||||
conn.delete_stack("test_stack")
|
||||
|
|
@ -318,19 +281,22 @@ def test_cloudformation_params():
|
|||
"APPNAME": {
|
||||
"Default": "app-name",
|
||||
"Description": "The name of the app",
|
||||
"Type": "String"
|
||||
"Type": "String",
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
dummy_template_json = json.dumps(dummy_template)
|
||||
cfn = boto.connect_cloudformation()
|
||||
cfn.create_stack('test_stack1', template_body=dummy_template_json, parameters=[
|
||||
('APPNAME', 'testing123')])
|
||||
stack = cfn.describe_stacks('test_stack1')[0]
|
||||
cfn.create_stack(
|
||||
"test_stack1",
|
||||
template_body=dummy_template_json,
|
||||
parameters=[("APPNAME", "testing123")],
|
||||
)
|
||||
stack = cfn.describe_stacks("test_stack1")[0]
|
||||
stack.parameters.should.have.length_of(1)
|
||||
param = stack.parameters[0]
|
||||
param.key.should.equal('APPNAME')
|
||||
param.value.should.equal('testing123')
|
||||
param.key.should.equal("APPNAME")
|
||||
param.value.should.equal("testing123")
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
|
|
@ -339,52 +305,34 @@ def test_cloudformation_params_conditions_and_resources_are_distinct():
|
|||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Stack 1",
|
||||
"Conditions": {
|
||||
"FooEnabled": {
|
||||
"Fn::Equals": [
|
||||
{
|
||||
"Ref": "FooEnabled"
|
||||
},
|
||||
"true"
|
||||
]
|
||||
},
|
||||
"FooEnabled": {"Fn::Equals": [{"Ref": "FooEnabled"}, "true"]},
|
||||
"FooDisabled": {
|
||||
"Fn::Not": [
|
||||
{
|
||||
"Fn::Equals": [
|
||||
{
|
||||
"Ref": "FooEnabled"
|
||||
},
|
||||
"true"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
"Fn::Not": [{"Fn::Equals": [{"Ref": "FooEnabled"}, "true"]}]
|
||||
},
|
||||
},
|
||||
"Parameters": {
|
||||
"FooEnabled": {
|
||||
"Type": "String",
|
||||
"AllowedValues": [
|
||||
"true",
|
||||
"false"
|
||||
]
|
||||
}
|
||||
"FooEnabled": {"Type": "String", "AllowedValues": ["true", "false"]}
|
||||
},
|
||||
"Resources": {
|
||||
"Bar": {
|
||||
"Properties": {
|
||||
"CidrBlock": "192.168.0.0/16",
|
||||
},
|
||||
"Properties": {"CidrBlock": "192.168.0.0/16"},
|
||||
"Condition": "FooDisabled",
|
||||
"Type": "AWS::EC2::VPC"
|
||||
"Type": "AWS::EC2::VPC",
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
dummy_template_json = json.dumps(dummy_template)
|
||||
cfn = boto.connect_cloudformation()
|
||||
cfn.create_stack('test_stack1', template_body=dummy_template_json, parameters=[('FooEnabled', 'true')])
|
||||
stack = cfn.describe_stacks('test_stack1')[0]
|
||||
cfn.create_stack(
|
||||
"test_stack1",
|
||||
template_body=dummy_template_json,
|
||||
parameters=[("FooEnabled", "true")],
|
||||
)
|
||||
stack = cfn.describe_stacks("test_stack1")[0]
|
||||
resources = stack.list_resources()
|
||||
assert not [resource for resource in resources if resource.logical_resource_id == 'Bar']
|
||||
assert not [
|
||||
resource for resource in resources if resource.logical_resource_id == "Bar"
|
||||
]
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
|
|
@ -403,48 +351,46 @@ def test_stack_tags():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_update_stack():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
conn.update_stack("test_stack", dummy_template_json2)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
stack.stack_status.should.equal("UPDATE_COMPLETE")
|
||||
stack.get_template().should.equal({
|
||||
'GetTemplateResponse': {
|
||||
'GetTemplateResult': {
|
||||
'TemplateBody': dummy_template_json2,
|
||||
'ResponseMetadata': {
|
||||
'RequestId': '2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE'
|
||||
stack.get_template().should.equal(
|
||||
{
|
||||
"GetTemplateResponse": {
|
||||
"GetTemplateResult": {
|
||||
"TemplateBody": dummy_template_json2,
|
||||
"ResponseMetadata": {
|
||||
"RequestId": "2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE"
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
def test_update_stack_with_previous_template():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
)
|
||||
conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
conn.update_stack("test_stack", use_previous_template=True)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
stack.stack_status.should.equal("UPDATE_COMPLETE")
|
||||
stack.get_template().should.equal({
|
||||
'GetTemplateResponse': {
|
||||
'GetTemplateResult': {
|
||||
'TemplateBody': dummy_template_json,
|
||||
'ResponseMetadata': {
|
||||
'RequestId': '2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE'
|
||||
stack.get_template().should.equal(
|
||||
{
|
||||
"GetTemplateResponse": {
|
||||
"GetTemplateResult": {
|
||||
"TemplateBody": dummy_template_json,
|
||||
"ResponseMetadata": {
|
||||
"RequestId": "2d06e36c-ac1d-11e0-a958-f9382b6eb86bEXAMPLE"
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
|
|
@ -454,29 +400,23 @@ def test_update_stack_with_parameters():
|
|||
"Description": "Stack",
|
||||
"Resources": {
|
||||
"VPC": {
|
||||
"Properties": {
|
||||
"CidrBlock": {"Ref": "Bar"}
|
||||
},
|
||||
"Type": "AWS::EC2::VPC"
|
||||
"Properties": {"CidrBlock": {"Ref": "Bar"}},
|
||||
"Type": "AWS::EC2::VPC",
|
||||
}
|
||||
},
|
||||
"Parameters": {
|
||||
"Bar": {
|
||||
"Type": "String"
|
||||
}
|
||||
}
|
||||
"Parameters": {"Bar": {"Type": "String"}},
|
||||
}
|
||||
dummy_template_json = json.dumps(dummy_template)
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
parameters=[("Bar", "192.168.0.0/16")]
|
||||
parameters=[("Bar", "192.168.0.0/16")],
|
||||
)
|
||||
conn.update_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
parameters=[("Bar", "192.168.0.1/16")]
|
||||
parameters=[("Bar", "192.168.0.1/16")],
|
||||
)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
|
|
@ -487,14 +427,10 @@ def test_update_stack_with_parameters():
|
|||
def test_update_stack_replace_tags():
|
||||
conn = boto.connect_cloudformation()
|
||||
conn.create_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
tags={"foo": "bar"},
|
||||
"test_stack", template_body=dummy_template_json, tags={"foo": "bar"}
|
||||
)
|
||||
conn.update_stack(
|
||||
"test_stack",
|
||||
template_body=dummy_template_json,
|
||||
tags={"foo": "baz"},
|
||||
"test_stack", template_body=dummy_template_json, tags={"foo": "baz"}
|
||||
)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
|
|
@ -506,28 +442,26 @@ def test_update_stack_replace_tags():
|
|||
@mock_cloudformation_deprecated
|
||||
def test_update_stack_when_rolled_back():
|
||||
conn = boto.connect_cloudformation()
|
||||
stack_id = conn.create_stack(
|
||||
"test_stack", template_body=dummy_template_json)
|
||||
stack_id = conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
|
||||
cloudformation_backends[conn.region.name].stacks[
|
||||
stack_id].status = 'ROLLBACK_COMPLETE'
|
||||
stack_id
|
||||
].status = "ROLLBACK_COMPLETE"
|
||||
|
||||
with assert_raises(BotoServerError) as err:
|
||||
conn.update_stack("test_stack", dummy_template_json)
|
||||
|
||||
ex = err.exception
|
||||
ex.body.should.match(
|
||||
r'is in ROLLBACK_COMPLETE state and can not be updated')
|
||||
ex.error_code.should.equal('ValidationError')
|
||||
ex.reason.should.equal('Bad Request')
|
||||
ex.body.should.match(r"is in ROLLBACK_COMPLETE state and can not be updated")
|
||||
ex.error_code.should.equal("ValidationError")
|
||||
ex.reason.should.equal("Bad Request")
|
||||
ex.status.should.equal(400)
|
||||
|
||||
|
||||
@mock_cloudformation_deprecated
|
||||
def test_describe_stack_events_shows_create_update_and_delete():
|
||||
conn = boto.connect_cloudformation()
|
||||
stack_id = conn.create_stack(
|
||||
"test_stack", template_body=dummy_template_json)
|
||||
stack_id = conn.create_stack("test_stack", template_body=dummy_template_json)
|
||||
conn.update_stack(stack_id, template_body=dummy_template_json2)
|
||||
conn.delete_stack(stack_id)
|
||||
|
||||
|
|
@ -538,14 +472,16 @@ def test_describe_stack_events_shows_create_update_and_delete():
|
|||
|
||||
# testing ordering of stack events without assuming resource events will not exist
|
||||
# the AWS API returns events in reverse chronological order
|
||||
stack_events_to_look_for = iter([
|
||||
("DELETE_COMPLETE", None),
|
||||
("DELETE_IN_PROGRESS", "User Initiated"),
|
||||
("UPDATE_COMPLETE", None),
|
||||
("UPDATE_IN_PROGRESS", "User Initiated"),
|
||||
("CREATE_COMPLETE", None),
|
||||
("CREATE_IN_PROGRESS", "User Initiated"),
|
||||
])
|
||||
stack_events_to_look_for = iter(
|
||||
[
|
||||
("DELETE_COMPLETE", None),
|
||||
("DELETE_IN_PROGRESS", "User Initiated"),
|
||||
("UPDATE_COMPLETE", None),
|
||||
("UPDATE_IN_PROGRESS", "User Initiated"),
|
||||
("CREATE_COMPLETE", None),
|
||||
("CREATE_IN_PROGRESS", "User Initiated"),
|
||||
]
|
||||
)
|
||||
try:
|
||||
for event in events:
|
||||
event.stack_id.should.equal(stack_id)
|
||||
|
|
@ -556,12 +492,10 @@ def test_describe_stack_events_shows_create_update_and_delete():
|
|||
event.logical_resource_id.should.equal("test_stack")
|
||||
event.physical_resource_id.should.equal(stack_id)
|
||||
|
||||
status_to_look_for, reason_to_look_for = next(
|
||||
stack_events_to_look_for)
|
||||
status_to_look_for, reason_to_look_for = next(stack_events_to_look_for)
|
||||
event.resource_status.should.equal(status_to_look_for)
|
||||
if reason_to_look_for is not None:
|
||||
event.resource_status_reason.should.equal(
|
||||
reason_to_look_for)
|
||||
event.resource_status_reason.should.equal(reason_to_look_for)
|
||||
except StopIteration:
|
||||
assert False, "Too many stack events"
|
||||
|
||||
|
|
@ -574,74 +508,60 @@ def test_create_stack_lambda_and_dynamodb():
|
|||
dummy_template = {
|
||||
"AWSTemplateFormatVersion": "2010-09-09",
|
||||
"Description": "Stack Lambda Test 1",
|
||||
"Parameters": {
|
||||
},
|
||||
"Parameters": {},
|
||||
"Resources": {
|
||||
"func1": {
|
||||
"Type" : "AWS::Lambda::Function",
|
||||
"Properties" : {
|
||||
"Code": {
|
||||
"S3Bucket": "bucket_123",
|
||||
"S3Key": "key_123"
|
||||
},
|
||||
"Type": "AWS::Lambda::Function",
|
||||
"Properties": {
|
||||
"Code": {"S3Bucket": "bucket_123", "S3Key": "key_123"},
|
||||
"FunctionName": "func1",
|
||||
"Handler": "handler.handler",
|
||||
"Role": "role1",
|
||||
"Runtime": "python2.7",
|
||||
"Description": "descr",
|
||||
"MemorySize": 12345,
|
||||
}
|
||||
},
|
||||
},
|
||||
"func1version": {
|
||||
"Type": "AWS::Lambda::Version",
|
||||
"Properties": {
|
||||
"FunctionName": {
|
||||
"Ref": "func1"
|
||||
}
|
||||
}
|
||||
"Properties": {"FunctionName": {"Ref": "func1"}},
|
||||
},
|
||||
"tab1": {
|
||||
"Type" : "AWS::DynamoDB::Table",
|
||||
"Properties" : {
|
||||
"Type": "AWS::DynamoDB::Table",
|
||||
"Properties": {
|
||||
"TableName": "tab1",
|
||||
"KeySchema": [{
|
||||
"AttributeName": "attr1",
|
||||
"KeyType": "HASH"
|
||||
}],
|
||||
"AttributeDefinitions": [{
|
||||
"AttributeName": "attr1",
|
||||
"AttributeType": "string"
|
||||
}],
|
||||
"KeySchema": [{"AttributeName": "attr1", "KeyType": "HASH"}],
|
||||
"AttributeDefinitions": [
|
||||
{"AttributeName": "attr1", "AttributeType": "string"}
|
||||
],
|
||||
"ProvisionedThroughput": {
|
||||
"ReadCapacityUnits": 10,
|
||||
"WriteCapacityUnits": 10
|
||||
}
|
||||
}
|
||||
"WriteCapacityUnits": 10,
|
||||
},
|
||||
},
|
||||
},
|
||||
"func1mapping": {
|
||||
"Type": "AWS::Lambda::EventSourceMapping",
|
||||
"Properties": {
|
||||
"FunctionName": {
|
||||
"Ref": "func1"
|
||||
},
|
||||
"FunctionName": {"Ref": "func1"},
|
||||
"EventSourceArn": "arn:aws:dynamodb:region:XXXXXX:table/tab1/stream/2000T00:00:00.000",
|
||||
"StartingPosition": "0",
|
||||
"BatchSize": 100,
|
||||
"Enabled": True
|
||||
}
|
||||
}
|
||||
"Enabled": True,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
validate_s3_before = os.environ.get('VALIDATE_LAMBDA_S3', '')
|
||||
validate_s3_before = os.environ.get("VALIDATE_LAMBDA_S3", "")
|
||||
try:
|
||||
os.environ['VALIDATE_LAMBDA_S3'] = 'false'
|
||||
os.environ["VALIDATE_LAMBDA_S3"] = "false"
|
||||
conn.create_stack(
|
||||
"test_stack_lambda_1",
|
||||
template_body=json.dumps(dummy_template),
|
||||
parameters={}.items()
|
||||
parameters={}.items(),
|
||||
)
|
||||
finally:
|
||||
os.environ['VALIDATE_LAMBDA_S3'] = validate_s3_before
|
||||
os.environ["VALIDATE_LAMBDA_S3"] = validate_s3_before
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
resources = stack.list_resources()
|
||||
|
|
@ -657,18 +577,15 @@ def test_create_stack_kinesis():
|
|||
"Parameters": {},
|
||||
"Resources": {
|
||||
"stream1": {
|
||||
"Type" : "AWS::Kinesis::Stream",
|
||||
"Properties" : {
|
||||
"Name": "stream1",
|
||||
"ShardCount": 2
|
||||
}
|
||||
"Type": "AWS::Kinesis::Stream",
|
||||
"Properties": {"Name": "stream1", "ShardCount": 2},
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
conn.create_stack(
|
||||
"test_stack_kinesis_1",
|
||||
template_body=json.dumps(dummy_template),
|
||||
parameters={}.items()
|
||||
parameters={}.items(),
|
||||
)
|
||||
|
||||
stack = conn.describe_stacks()[0]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue