@@ -28,6 +28,7 @@ class PowerDNSTestCase(LibcloudTestCase):
2828 def setUp (self ):
2929 PowerDNSDriver .connectionCls .conn_class = PowerDNSMockHttp
3030 PowerDNSMockHttp .type = None
31+ PowerDNSMockHttp .history .clear ()
3132 self .driver = PowerDNSDriver ("testsecret" )
3233
3334 self .test_zone = Zone (
@@ -40,7 +41,7 @@ def setUp(self):
4041 )
4142 self .test_record = Record (
4243 id = None ,
43- name = "" ,
44+ name = "example.com " ,
4445 data = "192.0.2.1" ,
4546 type = RecordType .A ,
4647 zone = self .test_zone ,
@@ -55,6 +56,17 @@ def test_create_record(self):
5556 data = "192.0.5.4" ,
5657 extra = {"ttl" : 86400 },
5758 )
59+
60+ sent = PowerDNSMockHttp .history .pop ()
61+ self .assertEqual (sent .method , "PATCH" )
62+ self .assertEqual (sent .url , "/servers/localhost/zones/example.com." )
63+ rrset = sent .json ["rrsets" ]
64+ self .assertEqual (len (rrset ), 1 )
65+ self .assertEqual (rrset [0 ]["name" ], "newrecord.example.com" )
66+ self .assertEqual (rrset [0 ]["type" ], "A" )
67+ self .assertEqual (rrset [0 ]["records" ][0 ]["content" ], "192.0.5.4" )
68+ self .assertEqual (rrset [0 ]["changetype" ], "REPLACE" )
69+
5870 self .assertIsNone (record .id )
5971 self .assertEqual (record .name , "newrecord.example.com" )
6072 self .assertEqual (record .data , "192.0.5.4" )
@@ -64,6 +76,12 @@ def test_create_record(self):
6476 def test_create_zone (self ):
6577 extra = {"nameservers" : ["ns1.example.org" , "ns2.example.org" ]}
6678 zone = self .driver .create_zone ("example.org" , extra = extra )
79+
80+ sent = PowerDNSMockHttp .history .pop ()
81+ self .assertEqual (sent .method , "POST" )
82+ self .assertEqual (sent .url , "/servers/localhost/zones" )
83+ self .assertEqual (sent .json ["name" ], "example.org" )
84+
6785 self .assertEqual (zone .id , "example.org." )
6886 self .assertEqual (zone .domain , "example.org" )
6987 self .assertIsNone (zone .type )
@@ -75,12 +93,21 @@ def test_delete_record(self):
7593 def test_delete_zone (self ):
7694 self .assertTrue (self .test_zone .delete ())
7795
96+ sent = PowerDNSMockHttp .history .pop ()
97+ self .assertEqual (sent .method , "DELETE" )
98+ self .assertEqual (sent .url , "/servers/localhost/zones/example.com." )
99+
78100 def test_get_record (self ):
79101 with self .assertRaises (NotImplementedError ):
80102 self .driver .get_record ("example.com." , "12345" )
81103
82104 def test_get_zone (self ):
83105 zone = self .driver .get_zone ("example.com." )
106+
107+ sent = PowerDNSMockHttp .history .pop ()
108+ self .assertEqual (sent .method , "GET" )
109+ self .assertEqual (sent .url , "/servers/localhost/zones/example.com." )
110+
84111 self .assertEqual (zone .id , "example.com." )
85112 self .assertEqual (zone .domain , "example.com" )
86113 self .assertIsNone (zone .type )
@@ -92,10 +119,20 @@ def test_list_record_types(self):
92119
93120 def test_list_records (self ):
94121 records = self .driver .list_records (self .test_zone )
122+
123+ sent = PowerDNSMockHttp .history .pop ()
124+ self .assertEqual (sent .method , "GET" )
125+ self .assertEqual (sent .url , "/servers/localhost/zones/example.com." )
126+
95127 self .assertEqual (len (records ), 4 )
96128
97129 def test_list_zones (self ):
98130 zones = self .driver .list_zones ()
131+
132+ sent = PowerDNSMockHttp .history .pop ()
133+ self .assertEqual (sent .method , "GET" )
134+ self .assertEqual (sent .url , "/servers/localhost/zones" )
135+
99136 self .assertEqual (zones [0 ].id , "example.com." )
100137 self .assertEqual (zones [0 ].domain , "example.com" )
101138 self .assertIsNone (zones [0 ].type )
@@ -113,6 +150,19 @@ def test_update_record(self):
113150 data = "127.0.0.1" ,
114151 extra = {"ttl" : 300 },
115152 )
153+
154+ sent = PowerDNSMockHttp .history .pop ()
155+ self .assertEqual (sent .method , "PATCH" )
156+ self .assertEqual (sent .url , "/servers/localhost/zones/example.com." )
157+ rrset = sent .json ["rrsets" ]
158+ self .assertEqual (len (rrset ), 2 )
159+ self .assertEqual (rrset [0 ]["name" ], "example.com" )
160+ self .assertEqual (rrset [0 ]["changetype" ], "DELETE" )
161+ self .assertEqual (rrset [1 ]["name" ], "newrecord.example.com" )
162+ self .assertEqual (rrset [1 ]["type" ], "A" )
163+ self .assertEqual (rrset [1 ]["records" ][0 ]["content" ], "127.0.0.1" )
164+ self .assertEqual (rrset [1 ]["changetype" ], "REPLACE" )
165+
116166 self .assertIsNone (record .id )
117167 self .assertEqual (record .name , "newrecord.example.com" )
118168 self .assertEqual (record .data , "127.0.0.1" )
@@ -147,6 +197,7 @@ def test_delete_missing_zone(self):
147197
148198class PowerDNSMockHttp (MockHttp ):
149199 fixtures = DNSFileFixtures ("powerdns" )
200+ keep_history = True
150201 base_headers = {"content-type" : "application/json" }
151202
152203 def _servers_localhost_zones (self , method , url , body , headers ):
0 commit comments