From 6560063ceba44514263af69811950b6a580b85fd Mon Sep 17 00:00:00 2001 From: Alfred Moreno Date: Thu, 22 Sep 2016 18:38:47 -0700 Subject: [PATCH 1/2] Fix tagging code. Unit tests were passing but the underlying implementation wasn't producing the expected result --- moto/route53/models.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/moto/route53/models.py b/moto/route53/models.py index c15862770..6b293a1ca 100644 --- a/moto/route53/models.py +++ b/moto/route53/models.py @@ -238,18 +238,19 @@ class Route53Backend(BaseBackend): def change_tags_for_resource(self, resource_id, tags): if 'Tag' in tags: - for key, tag in tags.items(): - for t in tag: - self.resource_tags[resource_id][t['Key']] = t['Value'] - + if isinstance(tags['Tag'], list): + for tag in tags['Tag']: + self.resource_tags[resource_id][tag['Key']] = tag['Value'] + else: + key, value = (tags['Tag']['Key'], tags['Tag']['Value']) + self.resource_tags[resource_id][key] = value else: - for _, keys in tags.items(): - if isinstance(keys, list): - for key in keys: + if 'Key' in tags: + if isinstance(tags['Key'], list): + for key in tags['Key']: del(self.resource_tags[resource_id][key]) else: - del(self.resource_tags[resource_id][keys]) - + del(self.resource_tags[resource_id][tags['Key']]) def list_tags_for_resource(self, resource_id): if resource_id in self.resource_tags: From 40ad92b4bc3c90e459d6097ffc6324ad9d57c428 Mon Sep 17 00:00:00 2001 From: Alfred Moreno Date: Thu, 22 Sep 2016 18:44:07 -0700 Subject: [PATCH 2/2] Add a unit test to make sure multiple tags were actually associated with a resourceId --- tests/test_route53/test_route53.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_route53/test_route53.py b/tests/test_route53/test_route53.py index b3bed8272..c6699bdac 100644 --- a/tests/test_route53/test_route53.py +++ b/tests/test_route53/test_route53.py @@ -354,6 +354,8 @@ def test_list_or_change_tags_for_resource_request(): response['ResourceTagSet']['Tags'].should.contain(tag1) response['ResourceTagSet']['Tags'].should.contain(tag2) + len(response['ResourceTagSet']['Tags']).should.equal(2) + # Try to remove the tags conn.change_tags_for_resource( ResourceType='healthcheck',