Skip to content

Commit 632ecd8

Browse files
author
Aaron Sierra
committed
dns: cloudflare: Add API request checking
1 parent 4da7598 commit 632ecd8

1 file changed

Lines changed: 80 additions & 0 deletions

File tree

libcloud/test/dns/test_cloudflare.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def setUp(self):
3939
CloudFlareDNSDriver.MEMBERSHIPS_PAGE_SIZE = 5
4040
CloudFlareMockHttp.type = None
4141
CloudFlareMockHttp.use_param = "a"
42+
CloudFlareMockHttp.history.clear()
4243
self.driver = CloudFlareDNSDriver(*DNS_PARAMS_CLOUDFLARE)
4344

4445
def test_auth_key(self):
@@ -56,6 +57,11 @@ def test_list_record_types(self):
5657

5758
def test_list_zones(self):
5859
zones = self.driver.list_zones()
60+
61+
sent = CloudFlareMockHttp.history.pop()
62+
self.assertEqual(sent.method, "GET")
63+
self.assertEqual(sent.url.rsplit("?")[0], "/client/v4/zones")
64+
5965
self.assertEqual(len(zones), 1)
6066

6167
zone = zones[0]
@@ -69,6 +75,10 @@ def test_list_zones(self):
6975
def test_get_record(self):
7076
record = self.driver.get_record("1234", "364797364")
7177

78+
sent = CloudFlareMockHttp.history.pop()
79+
self.assertEqual(sent.method, "GET")
80+
self.assertEqual(sent.url, "/client/v4/zones/1234/dns_records/364797364")
81+
7282
self.assertEqual(record.id, "364797364")
7383
self.assertIsNone(record.name)
7484
self.assertEqual(record.type, "A")
@@ -85,6 +95,11 @@ def test_get_record_record_is_invalid(self):
8595
def test_list_records(self):
8696
zone = self.driver.list_zones()[0]
8797
records = self.driver.list_records(zone=zone)
98+
99+
sent = CloudFlareMockHttp.history.pop()
100+
self.assertEqual(sent.method, "GET")
101+
self.assertEqual(sent.url.rsplit("?")[0], f"/client/v4/zones/{zone.id}/dns_records")
102+
88103
self.assertEqual(len(records), 11)
89104

90105
record = records[0]
@@ -121,6 +136,11 @@ def test_list_records(self):
121136

122137
def test_get_zone(self):
123138
zone = self.driver.get_zone(zone_id="1234")
139+
140+
sent = CloudFlareMockHttp.history.pop()
141+
self.assertEqual(sent.method, "GET")
142+
self.assertEqual(sent.url, "/client/v4/zones/1234")
143+
124144
self.assertEqual(zone.id, "1234")
125145
self.assertEqual(zone.domain, "example.com")
126146
self.assertEqual(zone.type, "master")
@@ -142,6 +162,15 @@ def test_create_record(self):
142162
data="127.0.0.3",
143163
extra={"proxied": True},
144164
)
165+
166+
sent = CloudFlareMockHttp.history.pop()
167+
self.assertEqual(sent.method, "POST")
168+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}/dns_records")
169+
self.assertEqual(sent.json["type"], "A")
170+
self.assertEqual(sent.json["name"], "test5")
171+
self.assertEqual(sent.json["content"], "127.0.0.3")
172+
self.assertEqual(sent.json["proxied"], True)
173+
145174
self.assertEqual(record.id, "412561327")
146175
self.assertEqual(record.name, "test5")
147176
self.assertEqual(record.type, "A")
@@ -154,6 +183,17 @@ def test_create_record_SSHFP_record_type(self):
154183
record = self.driver.create_record(
155184
name="test_sshfp", zone=zone, type=RecordType.SSHFP, data="2 1 ABCDEF12345"
156185
)
186+
187+
sent = CloudFlareMockHttp.history.pop()
188+
self.assertEqual(sent.method, "POST")
189+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}/dns_records")
190+
self.assertEqual(sent.json["type"], "SSHFP")
191+
self.assertEqual(sent.json["name"], "test_sshfp")
192+
self.assertEqual(sent.json["content"], None)
193+
self.assertEqual(
194+
sent.json["data"], {"algorithm": "2", "type": "1", "fingerprint": "ABCDEF12345"}
195+
)
196+
157197
self.assertEqual(record.id, "200")
158198
self.assertEqual(record.name, "test_sshfp")
159199
self.assertEqual(record.type, "SSHFP")
@@ -166,6 +206,14 @@ def test_create_record_CAA_record_type(self):
166206
record = self.driver.create_record(
167207
name="test5", zone=zone, type=RecordType.CAA, data="0 issue caa.example.com"
168208
)
209+
210+
sent = CloudFlareMockHttp.history.pop()
211+
self.assertEqual(sent.method, "POST")
212+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}/dns_records")
213+
self.assertEqual(sent.json["type"], "CAA")
214+
self.assertEqual(sent.json["name"], "test5")
215+
self.assertEqual(sent.json["content"], "0\tissue\tcaa.example.com")
216+
169217
self.assertEqual(record.id, "412561327")
170218
self.assertEqual(record.name, "test5")
171219
self.assertEqual(record.type, "A")
@@ -214,6 +262,14 @@ def test_update_record(self):
214262
extra={"proxied": True},
215263
)
216264

265+
sent = CloudFlareMockHttp.history.pop()
266+
self.assertEqual(sent.method, "PUT")
267+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}/dns_records/{record.id}")
268+
self.assertEqual(sent.json["type"], "A")
269+
self.assertEqual(sent.json["name"], "test6")
270+
self.assertEqual(sent.json["content"], "127.0.0.4")
271+
self.assertEqual(sent.json["extra"]["proxied"], True)
272+
217273
self.assertEqual(updated_record.name, "test6")
218274
self.assertEqual(updated_record.type, "A")
219275
self.assertEqual(updated_record.data, "127.0.0.4")
@@ -233,15 +289,33 @@ def test_delete_record(self):
233289
zone = self.driver.list_zones()[0]
234290
record = zone.list_records()[0]
235291
result = self.driver.delete_record(record=record)
292+
293+
sent = CloudFlareMockHttp.history.pop()
294+
self.assertEqual(sent.method, "DELETE")
295+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}/dns_records/{record.id}")
296+
236297
self.assertTrue(result)
237298

238299
def test_delete_zone(self):
239300
zone = self.driver.list_zones()[0]
240301
result = self.driver.delete_zone(zone=zone)
302+
303+
sent = CloudFlareMockHttp.history.pop()
304+
self.assertEqual(sent.method, "DELETE")
305+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}")
306+
241307
self.assertTrue(result)
242308

243309
def test_create_zone(self):
244310
zone = self.driver.create_zone(domain="example2.com", extra={"jump_start": False})
311+
312+
sent = CloudFlareMockHttp.history.pop()
313+
self.assertEqual(sent.method, "POST")
314+
self.assertEqual(sent.url, f"/client/v4/zones")
315+
self.assertEqual(sent.json["type"], "full")
316+
self.assertEqual(sent.json["name"], "example2.com")
317+
self.assertEqual(sent.json["jump_start"], False)
318+
245319
self.assertEqual(zone.id, "6789")
246320
self.assertEqual(zone.domain, "example2.com")
247321

@@ -257,6 +331,11 @@ def test_update_zone(self):
257331

258332
updated_zone = self.driver.update_zone(zone=zone, domain="", extra={"paused": True})
259333

334+
sent = CloudFlareMockHttp.history.pop()
335+
self.assertEqual(sent.method, "PATCH")
336+
self.assertEqual(sent.url, f"/client/v4/zones/{zone.id}")
337+
self.assertEqual(sent.json["paused"], True)
338+
260339
self.assertEqual(zone.id, updated_zone.id)
261340
self.assertEqual(zone.domain, updated_zone.domain)
262341
self.assertEqual(zone.type, updated_zone.type)
@@ -312,6 +391,7 @@ def test_normalize_record_data_from_apu(self):
312391

313392
class CloudFlareMockHttp(MockHttp, unittest.TestCase):
314393
fixtures = DNSFileFixtures("cloudflare")
394+
keep_history = True
315395

316396
def _client_v4_memberships(self, method, url, body, headers):
317397
if method not in {"GET"}:

0 commit comments

Comments
 (0)