Skip to content

Commit a5cd569

Browse files
author
Aaron Sierra
committed
dns: worldwidedns: Add API request checking
1 parent fda0d81 commit a5cd569

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

libcloud/test/dns/test_worldwidedns.py

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class WorldWideDNSTests(unittest.TestCase):
2828
def setUp(self):
2929
WorldWideDNSDriver.connectionCls.conn_class = WorldWideDNSMockHttp
3030
WorldWideDNSMockHttp.type = None
31+
WorldWideDNSMockHttp.history.clear()
3132
self.driver = WorldWideDNSDriver(*DNS_PARAMS_WORLDWIDEDNS)
3233

3334
def assertHasKeys(self, dictionary, keys):
@@ -46,6 +47,11 @@ def test_list_record_types(self):
4647

4748
def test_list_zones_success(self):
4849
zones = self.driver.list_zones()
50+
51+
sent = WorldWideDNSMockHttp.history.pop()
52+
self.assertEqual(sent.method, "GET")
53+
self.assertEqual(sent.url, "/api_dns_list_domain.asp")
54+
4955
self.assertEqual(len(zones), 1)
5056

5157
zone = zones[0]
@@ -76,6 +82,12 @@ def test_list_zones_success(self):
7682
def test_list_records_success(self):
7783
zone = self.driver.list_zones()[0]
7884
records = self.driver.list_records(zone=zone)
85+
86+
sent = WorldWideDNSMockHttp.history.pop()
87+
self.assertEqual(sent.method, "GET")
88+
self.assertEqual(sent.url, "/api_dns_list_domain.asp")
89+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
90+
7991
self.assertEqual(len(records), 3)
8092

8193
www = records[0]
@@ -97,6 +109,12 @@ def test_list_records_zone_does_not_exist(self):
97109

98110
def test_get_zone_success(self):
99111
zone = self.driver.get_zone(zone_id="niteowebsponsoredthisone.com")
112+
113+
sent = WorldWideDNSMockHttp.history.pop()
114+
self.assertEqual(sent.method, "GET")
115+
self.assertEqual(sent.url, "/api_dns_list_domain.asp")
116+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
117+
100118
self.assertEqual(zone.id, "niteowebsponsoredthisone.com")
101119
self.assertEqual(zone.type, "master")
102120
self.assertEqual(zone.domain, "niteowebsponsoredthisone.com")
@@ -156,6 +174,17 @@ def test_get_record_record_does_not_exist(self):
156174

157175
def test_create_zone_success(self):
158176
zone = self.driver.create_zone(domain="niteowebsponsoredthisone.com", type="master")
177+
178+
# [0] /api_dns_new_domain.asp
179+
# [1] /api_dns_list.asp
180+
# [2] /api_dns_list_domain.asp
181+
sent = WorldWideDNSMockHttp.history.pop(0)
182+
self.assertEqual(sent.method, "GET")
183+
self.assertEqual(sent.url, "/api_dns_new_domain.asp")
184+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
185+
self.assertIn("1", sent.query["DYN"])
186+
self.assertIn("0", sent.query["TYPE"])
187+
159188
self.assertEqual(zone.id, "niteowebsponsoredthisone.com")
160189
self.assertEqual(zone.domain, "niteowebsponsoredthisone.com")
161190
self.assertEqual(zone.ttl, "43200")
@@ -173,6 +202,8 @@ def test_create_zone_validaton_error(self):
173202

174203
def test_update_zone_success(self):
175204
zone = self.driver.list_zones()[0]
205+
WorldWideDNSMockHttp.history.clear()
206+
176207
WorldWideDNSMockHttp.type = "UPDATE_ZONE"
177208
updated_zone = self.driver.update_zone(
178209
zone=zone,
@@ -181,6 +212,14 @@ def test_update_zone_success(self):
181212
extra={"HOSTMASTER": "mail.niteowebsponsoredthisone.com"},
182213
) # noqa
183214

215+
sent = WorldWideDNSMockHttp.history.pop(0)
216+
self.assertEqual(sent.method, "GET")
217+
self.assertEqual(sent.url, "/api_dns_modify.asp")
218+
self.assertNotIn("ID", sent.query)
219+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
220+
self.assertIn("3800", sent.query["TTL"])
221+
self.assertIn("mail.niteowebsponsoredthisone.com", sent.query["HOSTMASTER"])
222+
184223
self.assertEqual(zone.extra["HOSTMASTER"], "hostmaster.niteowebsponsoredthisone.com")
185224

186225
self.assertEqual(updated_zone.id, zone.id)
@@ -204,6 +243,8 @@ def test_update_zone_success(self):
204243

205244
def test_create_record_success(self):
206245
zone = self.driver.list_zones()[0]
246+
WorldWideDNSMockHttp.history.clear()
247+
207248
WorldWideDNSMockHttp.type = "CREATE_RECORD"
208249
record = self.driver.create_record(
209250
name="domain4",
@@ -213,6 +254,18 @@ def test_create_record_success(self):
213254
extra={"entry": 4},
214255
)
215256

257+
# [0] /api_dns_modify.asp
258+
# [1] /api_dns_list_domain.asp
259+
sent = WorldWideDNSMockHttp.history.pop(0)
260+
self.assertEqual(sent.method, "GET")
261+
self.assertEqual(sent.url, "/api_dns_modify.asp")
262+
self.assertNotIn("ID", sent.query)
263+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
264+
self.assertIn("domain4", sent.query["S4"])
265+
self.assertIn("A", sent.query["T4"])
266+
self.assertIn("0.0.0.4", sent.query["D4"])
267+
self.assertIn("43200", sent.query["TTL"])
268+
216269
self.assertEqual(record.id, "4")
217270
self.assertEqual(record.name, "domain4")
218271
self.assertNotEqual(record.zone.extra.get("S4"), zone.extra.get("S4"))
@@ -279,6 +332,8 @@ def test_create_record_max_entry_reached_give_entry(self):
279332
def test_update_record_success(self):
280333
zone = self.driver.list_zones()[0]
281334
record = self.driver.get_record(zone.id, "1")
335+
WorldWideDNSMockHttp.history.clear()
336+
282337
WorldWideDNSMockHttp.type = "UPDATE_RECORD"
283338
record = self.driver.update_record(
284339
record=record,
@@ -288,6 +343,18 @@ def test_update_record_success(self):
288343
extra={"entry": 1},
289344
)
290345

346+
# [0] /api_dns_modify.asp
347+
# [1] /api_dns_list_domain.asp
348+
sent = WorldWideDNSMockHttp.history.pop(0)
349+
self.assertEqual(sent.method, "GET")
350+
self.assertEqual(sent.url, "/api_dns_modify.asp")
351+
self.assertNotIn("ID", sent.query)
352+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
353+
self.assertIn("domain1", sent.query["S1"])
354+
self.assertIn("A", sent.query["T1"])
355+
self.assertIn("0.0.0.1", sent.query["D1"])
356+
self.assertIn("43200", sent.query["TTL"])
357+
291358
self.assertEqual(record.id, "1")
292359
self.assertEqual(record.name, "domain1")
293360
self.assertNotEqual(record.zone.extra.get("S1"), zone.extra.get("S1"))
@@ -298,6 +365,12 @@ def test_update_record_success(self):
298365
def test_delete_zone_success(self):
299366
zone = self.driver.list_zones()[0]
300367
status = self.driver.delete_zone(zone=zone)
368+
369+
sent = WorldWideDNSMockHttp.history.pop()
370+
self.assertEqual(sent.method, "GET")
371+
self.assertEqual(sent.url, "/api_dns_delete_domain.asp")
372+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
373+
301374
self.assertTrue(status)
302375

303376
def test_delete_zone_does_not_exist(self):
@@ -315,10 +388,25 @@ def test_delete_zone_does_not_exist(self):
315388
def test_delete_record_success(self):
316389
zone = self.driver.list_zones()[0]
317390
records = self.driver.list_records(zone=zone)
391+
WorldWideDNSMockHttp.history.clear()
392+
318393
self.assertEqual(len(records), 3)
319394
record = records[1]
395+
320396
WorldWideDNSMockHttp.type = "DELETE_RECORD"
321397
status = self.driver.delete_record(record=record)
398+
399+
# [0] /api_dns_modify.asp
400+
# [1] /api_dns_list.asp
401+
# [2] /api_dns_list_domain.asp
402+
sent = WorldWideDNSMockHttp.history.pop(0)
403+
self.assertEqual(sent.method, "GET")
404+
self.assertEqual(sent.url, "/api_dns_modify.asp")
405+
self.assertIn("niteowebsponsoredthisone.com", sent.query["DOMAIN"])
406+
self.assertIn("www", sent.query["S1"])
407+
self.assertIn("NONE", sent.query["T2"])
408+
self.assertIn("@", sent.query["S3"])
409+
322410
self.assertTrue(status)
323411
zone = self.driver.list_zones()[0]
324412
records = self.driver.list_records(zone=zone)
@@ -327,6 +415,7 @@ def test_delete_record_success(self):
327415

328416
class WorldWideDNSMockHttp(MockHttp):
329417
fixtures = DNSFileFixtures("worldwidedns")
418+
keep_history = True
330419

331420
def _api_dns_list_asp(self, method, url, body, headers):
332421
body = self.fixtures.load("api_dns_list")

0 commit comments

Comments
 (0)