1818from libcloud .test import MockHttp , LibcloudTestCase
1919from libcloud .dns .base import Zone , Record
2020from libcloud .dns .types import RecordType , ZoneDoesNotExistError , RecordDoesNotExistError
21- from libcloud .utils .py3 import httplib
21+ from libcloud .utils .py3 import httplib , urlparse
2222from libcloud .dns .drivers .nfsn import NFSNDNSDriver
2323from libcloud .test .file_fixtures import DNSFileFixtures
2424
@@ -27,6 +27,7 @@ class NFSNTestCase(LibcloudTestCase):
2727 def setUp (self ):
2828 NFSNDNSDriver .connectionCls .conn_class = NFSNMockHttp
2929 NFSNMockHttp .type = None
30+ NFSNMockHttp .history .clear ()
3031 self .driver = NFSNDNSDriver ("testid" , "testsecret" )
3132
3233 self .test_zone = Zone (
@@ -57,6 +58,11 @@ def test_create_zone(self):
5758
5859 def test_get_zone (self ):
5960 zone = self .driver .get_zone ("example.com" )
61+
62+ sent = NFSNMockHttp .history .pop ()
63+ self .assertEqual (sent .method , "GET" )
64+ self .assertEqual (sent .url , "/dns/example.com/serial" )
65+
6066 self .assertEqual (zone .id , None )
6167 self .assertEqual (zone .domain , "example.com" )
6268
@@ -69,6 +75,18 @@ def test_create_record(self):
6975 record = self .test_zone .create_record (
7076 name = "newrecord" , type = RecordType .A , data = "127.0.0.1" , extra = {"ttl" : 900 }
7177 )
78+
79+ # [0] /dns/example.com/addRR
80+ # [1] /dns/example.com/listRRs
81+ sent = NFSNMockHttp .history .pop (0 )
82+ self .assertEqual (sent .method , "POST" )
83+ self .assertEqual (sent .url , "/dns/example.com/addRR" )
84+ query = urlparse .parse_qs (sent .body )
85+ self .assertIn ("newrecord" , query ["name" ])
86+ self .assertIn ("A" , query ["type" ])
87+ self .assertIn ("127.0.0.1" , query ["data" ])
88+ self .assertIn ("900" , query ["ttl" ])
89+
7290 self .assertEqual (record .id , None )
7391 self .assertEqual (record .name , "newrecord" )
7492 self .assertEqual (record .data , "127.0.0.1" )
@@ -82,8 +100,20 @@ def test_get_record(self):
82100 def test_delete_record (self ):
83101 self .assertTrue (self .test_record .delete ())
84102
103+ sent = NFSNMockHttp .history .pop ()
104+ self .assertEqual (sent .method , "POST" )
105+ self .assertEqual (sent .url , "/dns/example.com/removeRR" )
106+ query = urlparse .parse_qs (sent .body )
107+ self .assertIn ("A" , query ["type" ])
108+ self .assertIn ("192.0.2.1" , query ["data" ])
109+
85110 def test_list_records (self ):
86111 records = self .driver .list_records (self .test_zone )
112+
113+ sent = NFSNMockHttp .history .pop ()
114+ self .assertEqual (sent .method , "POST" )
115+ self .assertEqual (sent .url , "/dns/example.com/listRRs" )
116+
87117 self .assertEqual (len (records ), 2 )
88118
89119 def test_ex_get_records_by (self ):
@@ -109,6 +139,7 @@ def test_delete_record_not_found(self):
109139
110140class NFSNMockHttp (MockHttp ):
111141 fixtures = DNSFileFixtures ("nfsn" )
142+ keep_history = True
112143 base_headers = {"content-type" : "application/x-nfsn-api" }
113144
114145 def _dns_example_com_addRR_CREATED (self , method , url , body , headers ):
0 commit comments