Fix multiple bugs encountered with boto3

* Fix path detection for deleting keys in S3 bucket
* Fix stack deletion ensure delete method exists on object
  * Previous tests were using a stack with no resources
* Fix DESCRIBE_STACK_RESOURCES_RESPONSE,
  * Previously untested code path
This commit is contained in:
Declan Shanaghy 2016-03-31 13:33:13 -07:00
commit b152c00642
6 changed files with 81 additions and 30 deletions

View file

@ -379,7 +379,8 @@ class ResourceMap(collections.Mapping):
def delete(self):
for resource in self.resources:
parsed_resource = self._parsed_resources.pop(resource)
parsed_resource.delete(self._region_name)
if parsed_resource and hasattr(parsed_resource, 'delete'):
parsed_resource.delete(self._region_name)
class OutputMap(collections.Mapping):

View file

@ -230,21 +230,23 @@ DESCRIBE_STACK_RESOURCE_RESPONSE_TEMPLATE = """<DescribeStackResourceResponse>
</DescribeStackResourceResponse>"""
DESCRIBE_STACK_RESOURCES_RESPONSE = """<DescribeStackResourcesResult>
<StackResources>
{% for resource in stack.stack_resources %}
<member>
<StackId>{{ stack.stack_id }}</StackId>
<StackName>{{ stack.name }}</StackName>
<LogicalResourceId>{{ resource.logical_resource_id }}</LogicalResourceId>
<PhysicalResourceId>{{ resource.physical_resource_id }}</PhysicalResourceId>
<ResourceType>{{ resource.type }}</ResourceType>
<Timestamp>2010-07-27T22:27:28Z</Timestamp>
<ResourceStatus>{{ stack.status }}</ResourceStatus>
</member>
{% endfor %}
</StackResources>
</DescribeStackResourcesResult>"""
DESCRIBE_STACK_RESOURCES_RESPONSE = """<DescribeStackResourcesResponse>
<DescribeStackResourcesResult>
<StackResources>
{% for resource in stack.stack_resources %}
<member>
<StackId>{{ stack.stack_id }}</StackId>
<StackName>{{ stack.name }}</StackName>
<LogicalResourceId>{{ resource.logical_resource_id }}</LogicalResourceId>
<PhysicalResourceId>{{ resource.physical_resource_id }}</PhysicalResourceId>
<ResourceType>{{ resource.type }}</ResourceType>
<Timestamp>2010-07-27T22:27:28Z</Timestamp>
<ResourceStatus>{{ stack.status }}</ResourceStatus>
</member>
{% endfor %}
</StackResources>
</DescribeStackResourcesResult>
</DescribeStackResourcesResponse>"""
LIST_STACKS_RESPONSE = """<ListStacksResponse>

View file

@ -16,7 +16,9 @@ def parse_key_name(path):
def is_delete_keys(request, path, bucket_name):
return path == u'/' + bucket_name + u'/?delete' or (
path == u'/' + bucket_name and
getattr(request, "query_string", "") == "delete"
return (
path == u'/' + bucket_name + u'/?delete' or
path == u'/' + bucket_name + u'?delete' or
(path == u'/' + bucket_name and
getattr(request, "query_string", "") == "delete")
)