diff --git a/moto/route53/responses.py b/moto/route53/responses.py index 55160922e..50fe79b5e 100644 --- a/moto/route53/responses.py +++ b/moto/route53/responses.py @@ -45,7 +45,12 @@ def rrset_response(request, full_url, headers): if method == "POST": elements = xmltodict.parse(request.body) - for key, value in elements['ChangeResourceRecordSetsRequest']['ChangeBatch']['Changes'].items(): + + change_list = elements['ChangeResourceRecordSetsRequest']['ChangeBatch']['Changes']['Change'] + if not isinstance(change_list, list): + change_list = [elements['ChangeResourceRecordSetsRequest']['ChangeBatch']['Changes']['Change']] + + for value in change_list: action = value['Action'] rrset = value['ResourceRecordSet'] diff --git a/tests/test_route53/test_route53.py b/tests/test_route53/test_route53.py index 57da8112a..9536c958c 100644 --- a/tests/test_route53/test_route53.py +++ b/tests/test_route53/test_route53.py @@ -56,6 +56,16 @@ def test_rrset(): rrsets = conn.get_all_rrsets(zoneid, type="CNAME") rrsets.should.have.length_of(0) + changes = ResourceRecordSets(conn, zoneid) + changes.add_change("DELETE", "foo.bar.testdns.aws.com", "A") + change = changes.add_change("CREATE", "foo.bar.testdns.aws.com", "A") + change.add_value("5.6.7.8") + changes.commit() + + rrsets = conn.get_all_rrsets(zoneid, type="A") + rrsets.should.have.length_of(1) + rrsets[0].resource_records[0].should.equal('5.6.7.8') + changes = ResourceRecordSets(conn, zoneid) changes.add_change("DELETE", "foo.bar.testdns.aws.com", "A") changes.commit()