3030from 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+
3341class 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
268323class 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