Skip to content

Commit 47f9ca5

Browse files
author
Aaron Sierra
committed
dns: route53: Add API request checking
* Fix "ttle" typo in test_update_record()
1 parent 4b9d364 commit 47f9ca5

1 file changed

Lines changed: 74 additions & 1 deletion

File tree

libcloud/test/dns/test_route53.py

Lines changed: 74 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

299371
class 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

Comments
 (0)