Skip to content

Commit b1fba06

Browse files
author
Aaron Sierra
committed
dns: powerdns: Add API request checking
1 parent 78dd1d6 commit b1fba06

1 file changed

Lines changed: 52 additions & 1 deletion

File tree

libcloud/test/dns/test_powerdns.py

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

148198
class 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

Comments
 (0)