Skip to content

Commit d0aee37

Browse files
author
Aaron Sierra
committed
dns: digitalocean: Add API request checking
1 parent 72c3999 commit d0aee37

1 file changed

Lines changed: 57 additions & 0 deletions

File tree

libcloud/test/dns/test_digitalocean.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,30 @@ def setUp(self):
3131
DigitalOcean_v2_BaseDriver.connectionCls.conn_class = DigitalOceanDNSMockHttp
3232
DigitalOceanDNSDriver.connectionCls.conn_class = DigitalOceanDNSMockHttp
3333
DigitalOceanDNSMockHttp.type = None
34+
DigitalOceanDNSMockHttp.history.clear()
3435
self.driver = DigitalOceanDNSDriver(*DIGITALOCEAN_v2_PARAMS)
3536

3637
def tearDown(self):
3738
LibcloudConnection.type = None
3839
DigitalOceanDNSMockHttp.type = None
40+
DigitalOceanDNSMockHttp.history.clear()
3941

4042
def test_list_zones(self):
4143
zones = self.driver.list_zones()
44+
45+
sent = DigitalOceanDNSMockHttp.history.pop()
46+
self.assertEqual(sent.method, "GET")
47+
self.assertEqual(sent.url, "/v2/domains")
48+
4249
self.assertTrue(len(zones) >= 1)
4350

4451
def test_get_zone(self):
4552
zone = self.driver.get_zone("testdomain")
53+
54+
sent = DigitalOceanDNSMockHttp.history.pop()
55+
self.assertEqual(sent.method, "GET")
56+
self.assertEqual(sent.url, "/v2/domains/testdomain")
57+
4658
self.assertEqual(zone.id, "testdomain")
4759

4860
def test_get_zone_not_found(self):
@@ -52,12 +64,24 @@ def test_get_zone_not_found(self):
5264
def test_list_records(self):
5365
zone = self.driver.get_zone("testdomain")
5466
records = self.driver.list_records(zone)
67+
68+
sent = DigitalOceanDNSMockHttp.history.pop()
69+
self.assertEqual(sent.method, "GET")
70+
self.assertEqual(sent.url, "/v2/domains/testdomain/records")
71+
5572
self.assertTrue(len(records) >= 1)
5673
self.assertEqual(records[1].ttl, 1800)
5774
self.assertEqual(records[4].ttl, None)
5875

5976
def test_get_record(self):
6077
record = self.driver.get_record("testdomain", "1234564")
78+
79+
# [0] '/v2/domains/testdomain/records/1234564'
80+
# [1] '/v2/domains/testdomain'
81+
sent = DigitalOceanDNSMockHttp.history[0]
82+
self.assertEqual(sent.method, "GET")
83+
self.assertEqual(sent.url, "/v2/domains/testdomain/records/1234564")
84+
6185
self.assertEqual(record.id, "1234564")
6286
self.assertEqual(record.type, RecordType.A)
6387
self.assertEqual(record.data, "123.45.67.89")
@@ -70,6 +94,12 @@ def test_get_record_not_found(self):
7094
def test_create_zone(self):
7195
DigitalOceanDNSMockHttp.type = "CREATE"
7296
zone = self.driver.create_zone("testdomain")
97+
98+
sent = DigitalOceanDNSMockHttp.history.pop()
99+
self.assertEqual(sent.method, "POST")
100+
self.assertEqual(sent.url, "/v2/domains")
101+
self.assertEqual(sent.json["name"], "testdomain")
102+
73103
self.assertEqual(zone.id, "testdomain")
74104

75105
def test_create_record(self):
@@ -79,6 +109,15 @@ def test_create_record(self):
79109
record = self.driver.create_record(
80110
"sub", zone, RecordType.A, "234.56.78.90", extra={"ttl": 60}
81111
)
112+
113+
sent = DigitalOceanDNSMockHttp.history.pop()
114+
self.assertEqual(sent.method, "POST")
115+
self.assertEqual(sent.url, f"/v2/domains/{zone.domain}/records")
116+
self.assertEqual(sent.json["type"], "A")
117+
self.assertEqual(sent.json["name"], "sub")
118+
self.assertEqual(sent.json["data"], "234.56.78.90")
119+
self.assertEqual(sent.json["ttl"], 60)
120+
82121
self.assertEqual(record.id, "1234565")
83122
self.assertEqual(record.type, RecordType.A)
84123
self.assertEqual(record.data, "234.56.78.90")
@@ -89,6 +128,15 @@ def test_update_record(self):
89128

90129
DigitalOceanDNSMockHttp.type = "UPDATE"
91130
record = self.driver.update_record(record, data="234.56.78.90", extra={"ttl": 60})
131+
132+
sent = DigitalOceanDNSMockHttp.history.pop()
133+
self.assertIn(sent.method, {"PATCH", "PUT"})
134+
self.assertEqual(sent.url, f"/v2/domains/testdomain/records/{record.id}")
135+
self.assertEqual(sent.json["type"], "A")
136+
self.assertEqual(sent.json["name"], "@")
137+
self.assertEqual(sent.json["data"], "234.56.78.90")
138+
self.assertEqual(sent.json["ttl"], 60)
139+
92140
self.assertEqual(record.id, "1234564")
93141
self.assertEqual(record.data, "234.56.78.90")
94142
self.assertEqual(record.ttl, 60)
@@ -99,15 +147,24 @@ def test_delete_zone(self):
99147
DigitalOceanDNSMockHttp.type = "DELETE"
100148
self.assertTrue(self.driver.delete_zone(zone))
101149

150+
sent = DigitalOceanDNSMockHttp.history.pop()
151+
self.assertEqual(sent.method, "DELETE")
152+
self.assertEqual(sent.url, f"/v2/domains/{zone.domain}")
153+
102154
def test_delete_record(self):
103155
record = self.driver.get_record("testdomain", "1234564")
104156

105157
DigitalOceanDNSMockHttp.type = "DELETE"
106158
self.assertTrue(self.driver.delete_record(record))
107159

160+
sent = DigitalOceanDNSMockHttp.history.pop()
161+
self.assertIn(sent.method, "DELETE")
162+
self.assertEqual(sent.url, f"/v2/domains/testdomain/records/{record.id}")
163+
108164

109165
class DigitalOceanDNSMockHttp(MockHttp):
110166
fixtures = DNSFileFixtures("digitalocean")
167+
keep_history = True
111168

112169
response_map = {
113170
None: httplib.OK,

0 commit comments

Comments
 (0)