@@ -28,6 +28,7 @@ class Route53Tests(unittest.TestCase):
2828 def setUp (self ):
2929 Route53DNSDriver .connectionCls .conn_class = Route53MockHttp
3030 Route53MockHttp .type = None
31+ Route53MockHttp .history .clear ()
3132 self .driver = Route53DNSDriver (* DNS_PARAMS_ROUTE53 )
3233
3334 def test_list_record_types (self ):
@@ -37,6 +38,11 @@ def test_list_record_types(self):
3738
3839 def test_list_zones (self ):
3940 zones = self .driver .list_zones ()
41+
42+ sent = Route53MockHttp .history .pop ()
43+ self .assertEqual (sent .method , "GET" )
44+ self .assertEqual (sent .url , "/2012-02-29/hostedzone" )
45+
4046 self .assertEqual (len (zones ), 5 )
4147
4248 zone = zones [0 ]
@@ -47,6 +53,11 @@ def test_list_zones(self):
4753 def test_list_records (self ):
4854 zone = self .driver .list_zones ()[0 ]
4955 records = self .driver .list_records (zone = zone )
56+
57+ sent = Route53MockHttp .history .pop ()
58+ self .assertEqual (sent .method , "GET" )
59+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234/rrset" )
60+
5061 self .assertEqual (len (records ), 10 )
5162
5263 record = records [1 ]
@@ -81,6 +92,13 @@ def test_get_zone(self):
8192
8293 def test_get_record (self ):
8394 record = self .driver .get_record (zone_id = "47234" , record_id = "CNAME:wibble" )
95+
96+ sent = Route53MockHttp .history .pop ()
97+ self .assertEqual (sent .method , "GET" )
98+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234/rrset" )
99+ self .assertIn ("wibble.t.com" , sent .query ["name" ])
100+ self .assertIn ("CNAME" , sent .query ["type" ])
101+
84102 self .assertEqual (record .name , "wibble" )
85103 self .assertEqual (record .type , RecordType .CNAME )
86104 self .assertEqual (record .data , "t.com" )
@@ -130,6 +148,13 @@ def test_get_record_record_does_not_exist(self):
130148
131149 def test_create_zone (self ):
132150 zone = self .driver .create_zone (domain = "t.com" , type = "master" , ttl = None , extra = None )
151+
152+ sent = Route53MockHttp .history .pop ()
153+ self .assertEqual (sent .method , "POST" )
154+ self .assertEqual (sent .url , "/2012-02-29/hostedzone" )
155+ xml = sent .body .decode ()
156+ self .assertIn ("<Name>t.com</Name>" , xml )
157+
133158 self .assertEqual (zone .id , "47234" )
134159 self .assertEqual (zone .domain , "t.com" )
135160
@@ -139,6 +164,16 @@ def test_create_record(self):
139164 name = "www" , zone = zone , type = RecordType .A , data = "127.0.0.1" , extra = {"ttl" : 0 }
140165 )
141166
167+ sent = Route53MockHttp .history .pop ()
168+ self .assertEqual (sent .method , "POST" )
169+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234/rrset" )
170+ xml = sent .body .decode ()
171+ self .assertIn ("<Action>CREATE</Action>" , xml )
172+ self .assertIn ("<Name>www.t.com</Name>" , xml )
173+ self .assertIn ("<Type>A</Type>" , xml )
174+ self .assertIn ("<Value>127.0.0.1</Value>" , xml )
175+ self .assertIn ("<TTL>0</TTL>" , xml )
176+
142177 self .assertEqual (record .id , "A:www" )
143178 self .assertEqual (record .name , "www" )
144179 self .assertEqual (record .zone , zone )
@@ -151,6 +186,16 @@ def test_create_record_zone_name(self):
151186 name = "" , zone = zone , type = RecordType .A , data = "127.0.0.1" , extra = {"ttl" : 0 }
152187 )
153188
189+ sent = Route53MockHttp .history .pop ()
190+ self .assertEqual (sent .method , "POST" )
191+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234/rrset" )
192+ xml = sent .body .decode ()
193+ self .assertIn ("<Action>CREATE</Action>" , xml )
194+ self .assertIn ("<Name>t.com</Name>" , xml )
195+ self .assertIn ("<Type>A</Type>" , xml )
196+ self .assertIn ("<Value>127.0.0.1</Value>" , xml )
197+ self .assertIn ("<TTL>0</TTL>" , xml )
198+
154199 self .assertEqual (record .id , "A:" )
155200 self .assertEqual (record .name , "" )
156201 self .assertEqual (record .zone , zone )
@@ -249,10 +294,23 @@ def test_update_record(self):
249294 "name" : "www" ,
250295 "type" : RecordType .AAAA ,
251296 "data" : "::1" ,
252- "extra" : {"ttle " : 0 },
297+ "extra" : {"ttl " : 0 },
253298 }
254299 updated_record = self .driver .update_record (** params )
255300
301+ sent = Route53MockHttp .history .pop ()
302+ self .assertEqual (sent .method , "POST" )
303+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234/rrset" )
304+ xml = sent .body .decode ()
305+ self .assertIn ("<Name>www.t.com</Name>" , xml )
306+ self .assertIn ("<Action>DELETE</Action>" , xml )
307+ self .assertIn (f"<Type>{ record .type } </Type>" , xml )
308+ self .assertIn (f"<Value>{ record .data } </Value>" , xml )
309+ self .assertIn ("<Action>CREATE</Action>" , xml )
310+ self .assertIn ("<Type>AAAA</Type>" , xml )
311+ self .assertIn ("<Value>::1</Value>" , xml )
312+ self .assertIn ("<TTL>0</TTL>" , xml )
313+
256314 self .assertEqual (record .data , "208.111.35.173" )
257315
258316 self .assertEqual (updated_record .id , "AAAA:www" )
@@ -264,6 +322,11 @@ def test_update_record(self):
264322 def test_delete_zone (self ):
265323 zone = self .driver .list_zones ()[0 ]
266324 status = self .driver .delete_zone (zone = zone )
325+
326+ sent = Route53MockHttp .history .pop ()
327+ self .assertEqual (sent .method , "DELETE" )
328+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234" )
329+
267330 self .assertTrue (status )
268331
269332 def test_delete_zone_does_not_exist (self ):
@@ -282,6 +345,15 @@ def test_delete_record(self):
282345 zone = self .driver .list_zones ()[0 ]
283346 record = self .driver .list_records (zone = zone )[0 ]
284347 status = self .driver .delete_record (record = record )
348+
349+ sent = Route53MockHttp .history .pop ()
350+ self .assertEqual (sent .method , "POST" )
351+ self .assertEqual (sent .url , "/2012-02-29/hostedzone/47234/rrset" )
352+ xml = sent .body .decode ()
353+ self .assertIn ("<Action>DELETE</Action>" , xml )
354+ self .assertIn ("<Name>wibble.t.com</Name>" , xml )
355+ self .assertIn ("<Type>CNAME</Type>" , xml )
356+
285357 self .assertTrue (status )
286358
287359 def test_delete_record_does_not_exist (self ):
@@ -298,6 +370,7 @@ def test_delete_record_does_not_exist(self):
298370
299371class Route53MockHttp (MockHttp ):
300372 fixtures = DNSFileFixtures ("route53" )
373+ keep_history = True
301374
302375 def _2012_02_29_hostedzone_47234 (self , method , url , body , headers ):
303376 body = self .fixtures .load ("get_zone.xml" )
0 commit comments