Skip to content

Commit dd0c4c4

Browse files
author
Aaron Sierra
committed
dns: liquidweb: Add API request checking
1 parent 728fd5f commit dd0c4c4

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

libcloud/test/dns/test_liquidweb.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,18 @@
3030
from libcloud.dns.drivers.liquidweb import LiquidWebDNSDriver
3131

3232

33+
def value_hedge(val):
34+
"""
35+
Return a tuple containing the original value and its string representation,
36+
for use with assertIn() when the value format is inconsistent.
37+
"""
38+
return (val, str(val))
39+
40+
3341
class LiquidWebTests(unittest.TestCase):
3442
def setUp(self):
3543
LiquidWebMockHttp.type = None
44+
LiquidWebMockHttp.history.clear()
3645
LiquidWebDNSDriver.connectionCls.conn_class = LiquidWebMockHttp
3746
self.driver = LiquidWebDNSDriver(*DNS_PARAMS_LIQUIDWEB)
3847
self.test_zone = Zone(
@@ -66,6 +75,10 @@ def test_list_zones_empty(self):
6675
def test_list_zones_success(self):
6776
zones = self.driver.list_zones()
6877

78+
sent = LiquidWebMockHttp.history.pop()
79+
self.assertEqual(sent.method, "POST")
80+
self.assertEqual(sent.url, "/v1/Network/DNS/Zone/list")
81+
6982
self.assertEqual(len(zones), 3)
7083

7184
zone = zones[0]
@@ -102,6 +115,11 @@ def test_get_zone_success(self):
102115
LiquidWebMockHttp.type = "GET_ZONE_SUCCESS"
103116
zone = self.driver.get_zone(zone_id="13")
104117

118+
sent = LiquidWebMockHttp.history.pop()
119+
self.assertEqual(sent.method, "POST")
120+
self.assertEqual(sent.url, "/v1/Network/DNS/Zone/details")
121+
self.assertIn(sent.json["params"]["id"], value_hedge(13))
122+
105123
self.assertEqual(zone.id, "13")
106124
self.assertEqual(zone.domain, "blogtest.com")
107125
self.assertEqual(zone.type, "NATIVE")
@@ -113,6 +131,11 @@ def test_delete_zone_success(self):
113131
zone = self.test_zone
114132
status = self.driver.delete_zone(zone=zone)
115133

134+
sent = LiquidWebMockHttp.history.pop()
135+
self.assertEqual(sent.method, "POST")
136+
self.assertEqual(sent.url, "/v1/Network/DNS/Zone/delete")
137+
self.assertIn(sent.json["params"]["id"], value_hedge(zone.id))
138+
116139
self.assertEqual(status, True)
117140

118141
def test_delete_zone_zone_does_not_exist(self):
@@ -129,6 +152,11 @@ def test_create_zone_success(self):
129152
LiquidWebMockHttp.type = "CREATE_ZONE_SUCCESS"
130153
zone = self.driver.create_zone(domain="test.com")
131154

155+
sent = LiquidWebMockHttp.history.pop()
156+
self.assertEqual(sent.method, "POST")
157+
self.assertEqual(sent.url, "/v1/Network/DNS/Zone/create")
158+
self.assertEqual(sent.json["params"]["name"], "test.com")
159+
132160
self.assertEqual(zone.id, "13")
133161
self.assertEqual(zone.domain, "test.com")
134162
self.assertEqual(zone.type, "NATIVE")
@@ -156,6 +184,11 @@ def test_list_records_success(self):
156184
zone = self.test_zone
157185
records = self.driver.list_records(zone=zone)
158186

187+
sent = LiquidWebMockHttp.history.pop()
188+
self.assertEqual(sent.method, "POST")
189+
self.assertEqual(sent.url, "/v1/Network/DNS/Record/list")
190+
self.assertIn(sent.json["params"]["zone_id"], value_hedge(zone.id))
191+
159192
self.assertEqual(len(records), 3)
160193

161194
record = records[0]
@@ -193,6 +226,11 @@ def test_get_record_success(self):
193226
LiquidWebMockHttp.type = "GET_RECORD_SUCCESS"
194227
record = self.driver.get_record(zone_id="13", record_id="13")
195228

229+
sent = LiquidWebMockHttp.history.pop()
230+
self.assertEqual(sent.method, "POST")
231+
self.assertEqual(sent.url, "/v1/Network/DNS/Record/details")
232+
self.assertIn(sent.json["params"]["id"], value_hedge(13))
233+
196234
self.assertEqual(record.id, "13")
197235
self.assertEqual(record.type, "A")
198236
self.assertEqual(record.name, "nerd.domain.com")
@@ -214,6 +252,15 @@ def test_update_record_success(self):
214252
data=record.data,
215253
extra={"ttl": 5600},
216254
)
255+
256+
sent = LiquidWebMockHttp.history.pop()
257+
self.assertEqual(sent.method, "PUT")
258+
self.assertEqual(sent.url, "/v1/Network/DNS/Record/update")
259+
self.assertIn(sent.json["params"]["id"], value_hedge(13))
260+
self.assertEqual(sent.json["params"]["name"], "nerd.domain.com")
261+
self.assertEqual(sent.json["params"]["rdata"], "127.0.0.1")
262+
self.assertIn(sent.json["params"]["ttl"], value_hedge(5600))
263+
217264
self.assertEqual(record1.id, "13")
218265
self.assertEqual(record1.type, "A")
219266
self.assertEqual(record1.name, "nerd.domain.com")
@@ -255,6 +302,14 @@ def test_create_record_success(self):
255302
extra={"ttl": 300},
256303
)
257304

305+
sent = LiquidWebMockHttp.history.pop()
306+
self.assertEqual(sent.method, "POST")
307+
self.assertEqual(sent.url, "/v1/Network/DNS/Record/create")
308+
self.assertIn(sent.json["params"]["zone_id"], value_hedge(13))
309+
self.assertEqual(sent.json["params"]["name"], "nerd.domain.com")
310+
self.assertEqual(sent.json["params"]["rdata"], "127.0.0.1")
311+
self.assertIn(sent.json["params"]["ttl"], value_hedge(300))
312+
258313
self.assertEqual(record.id, "13")
259314
self.assertEqual(record.type, "A")
260315
self.assertEqual(record.name, "nerd.domain.com")
@@ -267,6 +322,7 @@ def test_record_already_exists_error(self):
267322

268323
class LiquidWebMockHttp(MockHttp):
269324
fixtures = DNSFileFixtures("liquidweb")
325+
keep_history = True
270326

271327
def _v1_Network_DNS_Zone_list(self, method, url, body, headers):
272328
body = self.fixtures.load("zones_list.json")

0 commit comments

Comments
 (0)