def test_generate_changeset(self): old = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2012-02-29/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''') new = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2012-02-29/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''') expected_output = lxml.etree.XML('''<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2012-02-29/"><ChangeBatch><Comment>Generated by cli.py</Comment><Changes><Change><Action>DELETE</Action><ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </Change><Change><Action>CREATE</Action><ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </Change></Changes></ChangeBatch></ChangeResourceRecordSetsRequest>''') changeset = r53.generate_changeset(old, new) r53.XSLT_STRIPSPACE(changeset) r53.XSLT_STRIPSPACE(expected_output) self.assertEqual(lxml.etree.tostring(changeset), lxml.etree.tostring(expected_output))
def test_changeset_null(self): parser = lxml.etree.XMLParser(remove_blank_text=True) old = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) new = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) self.assertEqual(r53.generate_changeset(old, new), None)
def test_changeset_wildcard(self): parser = lxml.etree.XMLParser(remove_blank_text=True) old = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>\052.example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) new = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>*.example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) self.assertEqual(r53.generate_changeset(old, new), None)
def test_changeset_wildcard(self): parser = lxml.etree.XMLParser(remove_blank_text=True) old = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>\052.example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) new = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>*.example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) self.assertEqual(r53.generate_changeset(old, new), None)
def test_changeset_null(self): parser = lxml.etree.XMLParser(remove_blank_text=True) old = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) new = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) self.assertEqual(r53.generate_changeset(old, new), None)
def test_changeset_subtract(self): parser = lxml.etree.XMLParser(remove_blank_text=True) old = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) new = lxml.etree.XML('''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) expected_output = lxml.etree.XML( '''<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ChangeBatch> <Comment>foobar</Comment> <Changes> <Change> <Action>DELETE</Action> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </Change> </Changes> </ChangeBatch> </ChangeResourceRecordSetsRequest>''', parser=parser) changeset = r53.generate_changeset(old, new, comment='foobar') self.assertEqual(lxml.etree.tostring(changeset), lxml.etree.tostring(expected_output))
def test_changeset_subtract(self): parser = lxml.etree.XMLParser(remove_blank_text=True) old = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) new = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''', parser=parser) expected_output = lxml.etree.XML( '''<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ChangeBatch> <Comment>foobar</Comment> <Changes> <Change> <Action>DELETE</Action> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </Change> </Changes> </ChangeBatch> </ChangeResourceRecordSetsRequest>''', parser=parser) changeset = r53.generate_changeset(old, new, comment='foobar') self.assertEqual(lxml.etree.tostring(changeset), lxml.etree.tostring(expected_output))
def test_changeset_add(self): old = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''') new = lxml.etree.XML( '''<ResourceRecordSets xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ResourceRecordSet> <Name>example.com.</Name> <Type>SOA</Type> <TTL>900</TTL> <ResourceRecords> <ResourceRecord> <Value>ns-2048.awsdns-64.net. hostmaster.awsdns.com. 1 7200 900 1209600 86400</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </ResourceRecordSets>''') expected_output = lxml.etree.XML( '''<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/"> <ChangeBatch> <Comment>foobar</Comment> <Changes> <Change> <Action>CREATE</Action> <ResourceRecordSet> <Name>example.com.</Name> <Type>A</Type> <TTL>60</TTL> <ResourceRecords> <ResourceRecord> <Value>192.168.0.1</Value> </ResourceRecord> </ResourceRecords> </ResourceRecordSet> </Change> </Changes> </ChangeBatch> </ChangeResourceRecordSetsRequest>''') changeset = r53.generate_changeset(old, new, comment='foobar') r53.XSLT_STRIPSPACE(changeset) r53.XSLT_STRIPSPACE(expected_output) self.assertEqual(lxml.etree.tostring(changeset), lxml.etree.tostring(expected_output))