moto/tests/test_route53/test_server.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

29 lines
1.5 KiB
Python
Raw Normal View History

2021-12-09 22:33:09 +00:00
import xmltodict
import moto.server as server
def test_list_recordset():
backend = server.create_backend_app("route53")
test_client = backend.test_client()
# create hosted zone
request_data = '<CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/"><Name>example.com</Name><CallerReference>2014-04-01-18:47</CallerReference></CreateHostedZoneRequest>'
res = test_client.post("2013-04-01/hostedzone", data=request_data)
body = parse_xml(res.data)
zone_id = body["CreateHostedZoneResponse"]["HostedZone"]["Id"].rsplit("/")[-1]
# change record set
# Contains a special character
request_data = '<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/"><ChangeBatch><Changes><Change><Action>CREATE</Action><ResourceRecordSet><Name>n.example.com</Name><Type>TXT</Type><SetIdentifier>string</SetIdentifier><Weight>1</Weight><Region>us-east-1</Region><ResourceRecords><ResourceRecord><Value>val&amp;sth</Value></ResourceRecord></ResourceRecords></ResourceRecordSet></Change></Changes></ChangeBatch></ChangeResourceRecordSetsRequest>'
test_client.post(f"2013-04-01/hostedzone/{zone_id}/rrset/", data=request_data)
# list record set
res = test_client.get(f"2013-04-01/hostedzone/{zone_id}/rrset")
# Ampersand should be properly encoded
assert "<Value><![CDATA[val&sth]]></Value>" in res.data.decode("utf-8")
2021-12-09 22:33:09 +00:00
def parse_xml(body):
return xmltodict.parse(body, dict_constructor=dict)