Route53 Delete: respect the given Type

This commit is contained in:
Niels Laukens 2019-06-17 15:53:32 +02:00
parent df493ea18d
commit 6e97881896
No known key found for this signature in database
GPG Key ID: D1397B5A6435A6D8
3 changed files with 26 additions and 4 deletions

View File

@ -190,9 +190,13 @@ class FakeZone(BaseModel):
self.rrsets.append(new_rrset) self.rrsets.append(new_rrset)
return new_rrset return new_rrset
def delete_rrset_by_name(self, name): def delete_rrset(self, rrset):
self.rrsets = [ self.rrsets = [
record_set for record_set in self.rrsets if record_set.name != name] record_set
for record_set in self.rrsets
if record_set.name != rrset['Name'] or
record_set.type_ != rrset['Type']
]
def delete_rrset_by_id(self, set_identifier): def delete_rrset_by_id(self, set_identifier):
self.rrsets = [ self.rrsets = [

View File

@ -147,7 +147,7 @@ class Route53(BaseResponse):
the_zone.delete_rrset_by_id( the_zone.delete_rrset_by_id(
record_set["SetIdentifier"]) record_set["SetIdentifier"])
else: else:
the_zone.delete_rrset_by_name(record_set["Name"]) the_zone.delete_rrset(record_set)
return 200, headers, CHANGE_RRSET_RESPONSE return 200, headers, CHANGE_RRSET_RESPONSE

View File

@ -110,6 +110,7 @@ def test_rrset():
changes = ResourceRecordSets(conn, zoneid) changes = ResourceRecordSets(conn, zoneid)
changes.add_change("DELETE", "foo.bar.testdns.aws.com", "A") changes.add_change("DELETE", "foo.bar.testdns.aws.com", "A")
changes.add_change("DELETE", "foo.bar.testdns.aws.com", "TXT")
changes.commit() changes.commit()
changes = ResourceRecordSets(conn, zoneid) changes = ResourceRecordSets(conn, zoneid)
@ -582,7 +583,7 @@ def test_change_resource_record_sets_crud_valid():
cname_record_detail['TTL'].should.equal(60) cname_record_detail['TTL'].should.equal(60)
cname_record_detail['ResourceRecords'].should.equal([{'Value': '192.168.1.1'}]) cname_record_detail['ResourceRecords'].should.equal([{'Value': '192.168.1.1'}])
# Delete record. # Delete record with wrong type.
delete_payload = { delete_payload = {
'Comment': 'delete prod.redis.db', 'Comment': 'delete prod.redis.db',
'Changes': [ 'Changes': [
@ -597,6 +598,23 @@ def test_change_resource_record_sets_crud_valid():
} }
conn.change_resource_record_sets(HostedZoneId=hosted_zone_id, ChangeBatch=delete_payload) conn.change_resource_record_sets(HostedZoneId=hosted_zone_id, ChangeBatch=delete_payload)
response = conn.list_resource_record_sets(HostedZoneId=hosted_zone_id) response = conn.list_resource_record_sets(HostedZoneId=hosted_zone_id)
len(response['ResourceRecordSets']).should.equal(1)
# Delete record.
delete_payload = {
'Comment': 'delete prod.redis.db',
'Changes': [
{
'Action': 'DELETE',
'ResourceRecordSet': {
'Name': 'prod.redis.db',
'Type': 'A',
}
}
]
}
conn.change_resource_record_sets(HostedZoneId=hosted_zone_id, ChangeBatch=delete_payload)
response = conn.list_resource_record_sets(HostedZoneId=hosted_zone_id)
len(response['ResourceRecordSets']).should.equal(0) len(response['ResourceRecordSets']).should.equal(0)