@@ -28,6 +28,7 @@ class GandiTests(unittest.TestCase):
2828 def setUp (self ):
2929 GandiDNSDriver .connectionCls .conn_class = GandiMockHttp
3030 GandiMockHttp .type = None
31+ GandiMockHttp .history .clear ()
3132 self .driver = GandiDNSDriver (* DNS_GANDI )
3233
3334 def test_list_record_types (self ):
@@ -37,6 +38,12 @@ def test_list_record_types(self):
3738
3839 def test_list_zones (self ):
3940 zones = self .driver .list_zones ()
41+
42+ sent = GandiMockHttp .history .pop ()
43+ self .assertEqual (sent .method , "POST" )
44+ self .assertEqual (sent .url , "/xmlrpc/" )
45+ self .assertIn ("<methodName>domain.zone.list</" , sent .body )
46+
4047 self .assertEqual (len (zones ), 5 )
4148
4249 zone = zones [0 ]
@@ -47,6 +54,14 @@ def test_list_zones(self):
4754 def test_list_records (self ):
4855 zone = self .driver .list_zones ()[0 ]
4956 records = self .driver .list_records (zone = zone )
57+
58+ sent = GandiMockHttp .history .pop ()
59+ self .assertEqual (sent .method , "POST" )
60+ self .assertEqual (sent .url , "/xmlrpc/" )
61+ data = sent .body .replace (">/n<" , "><" )
62+ self .assertIn ("<methodName>domain.zone.record.list</" , data )
63+ self .assertIn ("<value><int>47234</int></" , data )
64+
5065 self .assertEqual (len (records ), 4 )
5166
5267 record = records [1 ]
@@ -65,6 +80,14 @@ def test_list_records(self):
6580
6681 def test_get_zone (self ):
6782 zone = self .driver .get_zone (zone_id = "47234" )
83+
84+ sent = GandiMockHttp .history .pop ()
85+ self .assertEqual (sent .method , "POST" )
86+ self .assertEqual (sent .url , "/xmlrpc/" )
87+ data = sent .body .replace (">/n<" , "><" )
88+ self .assertIn ("<methodName>domain.zone.info</" , data )
89+ self .assertIn ("<value><int>47234</int></" , data )
90+
6891 self .assertEqual (zone .id , "47234" )
6992 self .assertEqual (zone .type , "master" )
7093 self .assertEqual (zone .domain , "t.com" )
@@ -119,18 +142,39 @@ def test_get_record_record_does_not_exist(self):
119142
120143 def test_create_zone (self ):
121144 zone = self .driver .create_zone (domain = "t.com" , type = "master" , ttl = None , extra = None )
145+
146+ sent = GandiMockHttp .history .pop ()
147+ self .assertEqual (sent .method , "POST" )
148+ self .assertEqual (sent .url , "/xmlrpc/" )
149+ data = sent .body .replace (">/n<" , "><" )
150+ self .assertIn ("<methodName>domain.zone.create</" , data )
151+ self .assertIn ("<value><string>t.com</string></" , data )
152+
122153 self .assertEqual (zone .id , "47234" )
123154 self .assertEqual (zone .domain , "t.com" )
124155
125156 def test_update_zone (self ):
126- zone = self .driver .get_zone (zone_id = "47234" )
127- zone = self .driver .update_zone (zone , domain = "t.com" )
157+ pre_zone = self .driver .get_zone (zone_id = "47234" )
158+ zone = self .driver .update_zone (pre_zone , domain = "other.com" )
159+
160+ sent = GandiMockHttp .history .pop ()
161+ self .assertEqual (sent .method , "POST" )
162+ self .assertEqual (sent .url , "/xmlrpc/" )
163+ data = sent .body .replace (">/n<" , "><" )
164+ self .assertIn ("<methodName>domain.zone.update</" , data )
165+ self .assertIn ("<value><int>47234</int></" , data )
166+ self .assertIn ("<value><string>other.com</string></" , data )
167+
168+ self .assertEqual (pre_zone .domain , "t.com" )
169+
128170 self .assertEqual (zone .id , "47234" )
129171 self .assertEqual (zone .type , "master" )
130- self .assertEqual (zone .domain , "t .com" )
172+ self .assertEqual (zone .domain , "other .com" )
131173
132174 def test_create_record (self ):
133175 zone = self .driver .list_zones ()[0 ]
176+ GandiMockHttp .history .clear ()
177+
134178 record = self .driver .create_record (
135179 name = "www" ,
136180 zone = zone ,
@@ -139,6 +183,19 @@ def test_create_record(self):
139183 extra = {"ttl" : 30 },
140184 )
141185
186+ # [0] domain.version.new
187+ # [1] domain.zone.record.add
188+ # [2] domain.version.set
189+ sent = GandiMockHttp .history [1 ]
190+ self .assertEqual (sent .method , "POST" )
191+ self .assertEqual (sent .url , "/xmlrpc/" )
192+ data = sent .body .replace (">/n<" , "><" )
193+ self .assertIn ("<methodName>domain.zone.record.add</" , data )
194+ self .assertIn (f"<value><int>{ zone .id } </int></" , data )
195+ self .assertIn ("<value><string>www</string></" , data )
196+ self .assertIn ("<value><string>127.0.0.1</string></" , data )
197+ self .assertIn ("<value><int>30</int></" , data )
198+
142199 self .assertEqual (record .id , "A:www" )
143200 self .assertEqual (record .name , "www" )
144201 self .assertEqual (record .zone , zone )
@@ -148,6 +205,7 @@ def test_create_record(self):
148205 def test_update_record (self ):
149206 zone = self .driver .list_zones ()[0 ]
150207 record = self .driver .list_records (zone = zone )[1 ]
208+ GandiMockHttp .history .clear ()
151209
152210 params = {
153211 "record" : record ,
@@ -158,6 +216,21 @@ def test_update_record(self):
158216 }
159217 updated_record = self .driver .update_record (** params )
160218
219+ # [0] domain.version.new
220+ # [1] domain.zone.record.delete
221+ # [2] domain.zone.record.add
222+ # [3] domain.version.set
223+ sent = GandiMockHttp .history [2 ]
224+ self .assertEqual (sent .method , "POST" )
225+ self .assertEqual (sent .url , "/xmlrpc/" )
226+ data = sent .body .replace (">/n<" , "><" )
227+ self .assertIn ("<methodName>domain.zone.record.add</" , data )
228+ self .assertIn (f"<value><int>{ zone .id } </int></" , data )
229+ self .assertIn ("<value><string>www</string></" , data )
230+ self .assertIn ("<value><string>A</string></" , data )
231+ self .assertIn ("<value><string>127.0.0.1</string></" , data )
232+ self .assertIn ("<value><int>30</int></" , data )
233+
161234 self .assertEqual (record .data , "208.111.35.173" )
162235
163236 self .assertEqual (updated_record .id , "A:www" )
@@ -169,6 +242,14 @@ def test_update_record(self):
169242 def test_delete_zone (self ):
170243 zone = self .driver .list_zones ()[0 ]
171244 status = self .driver .delete_zone (zone = zone )
245+
246+ sent = GandiMockHttp .history .pop ()
247+ self .assertEqual (sent .method , "POST" )
248+ self .assertEqual (sent .url , "/xmlrpc/" )
249+ data = sent .body .replace (">/n<" , "><" )
250+ self .assertIn ("<methodName>domain.zone.delete</" , data )
251+ self .assertIn (f"<value><int>{ zone .id } </int></" , data )
252+
172253 self .assertTrue (status )
173254
174255 def test_delete_zone_does_not_exist (self ):
@@ -186,7 +267,22 @@ def test_delete_zone_does_not_exist(self):
186267 def test_delete_record (self ):
187268 zone = self .driver .list_zones ()[0 ]
188269 record = self .driver .list_records (zone = zone )[0 ]
270+ GandiMockHttp .history .clear ()
271+
189272 status = self .driver .delete_record (record = record )
273+
274+ # [0] domain.version.new
275+ # [1] domain.zone.record.delete
276+ # [2] domain.version.set
277+ sent = GandiMockHttp .history [1 ]
278+ self .assertEqual (sent .method , "POST" )
279+ self .assertEqual (sent .url , "/xmlrpc/" )
280+ data = sent .body .replace (">/n<" , "><" )
281+ self .assertIn ("<methodName>domain.zone.record.delete</" , data )
282+ self .assertIn (f"<value><int>{ zone .id } </int></" , data )
283+ self .assertIn ("<value><int>1</int></" , data )
284+ self .assertIn (f"<value><string>{ record .name } </string></" , data )
285+
190286 self .assertTrue (status )
191287
192288 def test_delete_record_does_not_exist (self ):
@@ -203,13 +299,14 @@ def test_delete_record_does_not_exist(self):
203299
204300class GandiMockHttp (BaseGandiMockHttp ):
205301 fixtures = DNSFileFixtures ("gandi" )
302+ keep_history = True
206303
207304 def _xmlrpc__domain_zone_create (self , method , url , body , headers ):
208305 body = self .fixtures .load ("create_zone.xml" )
209306 return (httplib .OK , body , {}, httplib .responses [httplib .OK ])
210307
211308 def _xmlrpc__domain_zone_update (self , method , url , body , headers ):
212- body = self .fixtures .load ("get_zone .xml" )
309+ body = self .fixtures .load ("update_zone .xml" )
213310 return (httplib .OK , body , {}, httplib .responses [httplib .OK ])
214311
215312 def _xmlrpc__domain_zone_list (self , method , url , body , headers ):
0 commit comments