Skip to content

Commit 0d129b7

Browse files
author
Aaron Sierra
committed
linode: Add API request checking
1 parent 21120cf commit 0d129b7

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

libcloud/test/dns/test_linode_v4.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class LinodeTests(unittest.TestCase):
2727
def setUp(self):
2828
LinodeDNSDriverV4.connectionCls.conn_class = LinodeMockHttpV4
2929
LinodeMockHttpV4.type = None
30+
LinodeMockHttpV4.history.clear()
3031
self.driver = LinodeDNSDriver(*DNS_PARAMS_LINODE)
3132

3233
def test_correct_class_is_used(self):
@@ -37,6 +38,11 @@ def test_unknown_api_version(self):
3738

3839
def test_list_zones(self):
3940
zones = self.driver.list_zones()
41+
42+
sent = LinodeMockHttpV4.history.pop()
43+
self.assertEqual(sent.method, "GET")
44+
self.assertEqual(sent.url, "/v4/domains")
45+
4046
self.assertEqual(len(zones), 3)
4147
zone = zones[0]
4248
self.assertEqual(zone.id, "123")
@@ -47,6 +53,11 @@ def test_list_zones(self):
4753
def test_list_records(self):
4854
zone = self.driver.list_zones()[0]
4955
records = self.driver.list_records(zone)
56+
57+
sent = LinodeMockHttpV4.history.pop()
58+
self.assertEqual(sent.method, "GET")
59+
self.assertEqual(sent.url, "/v4/domains/123/records")
60+
5061
self.assertEqual(len(records), 6)
5162
record = records[0]
5263
self.assertEqual(record.id, "123")
@@ -55,6 +66,11 @@ def test_list_records(self):
5566

5667
def test_get_zone(self):
5768
zone = self.driver.get_zone("123")
69+
70+
sent = LinodeMockHttpV4.history.pop()
71+
self.assertEqual(sent.method, "GET")
72+
self.assertEqual(sent.url, "/v4/domains/123")
73+
5874
self.assertEqual(zone.id, "123")
5975
self.assertEqual(zone.domain, "test.com")
6076
self.assertEqual(zone.extra["soa_email"], "admin@test.com")
@@ -67,6 +83,13 @@ def test_get_zone_not_found(self):
6783
def test_get_record_A_RECORD(self):
6884
LinodeMockHttpV4.type = "A_RECORD"
6985
record = self.driver.get_record("123", "123")
86+
87+
# [0] /v4/domains/123/records/123
88+
# [1] /v4/domains/123
89+
sent = LinodeMockHttpV4.history.pop(0)
90+
self.assertEqual(sent.method, "GET")
91+
self.assertEqual(sent.url, "/v4/domains/123/records/123")
92+
7093
self.assertEqual(record.id, "123")
7194
self.assertEqual(record.name, "test.example.com")
7295
self.assertEqual(record.type, "A")
@@ -83,6 +106,14 @@ def test_create_zone(self):
83106
ttl = 300
84107
extra = {"soa_email": "admin@example.com"}
85108
zone = self.driver.create_zone(domain=domain, ttl=ttl, extra=extra)
109+
110+
sent = LinodeMockHttpV4.history.pop()
111+
self.assertEqual(sent.method, "POST")
112+
self.assertEqual(sent.url, "/v4/domains")
113+
self.assertEqual(sent.json["domain"], domain)
114+
self.assertEqual(sent.json["ttl_sec"], ttl)
115+
self.assertEqual(sent.json["soa_email"], extra["soa_email"])
116+
86117
self.assertEqual(zone.ttl, 300)
87118
self.assertEqual(zone.domain, "example.com")
88119
self.assertEqual(zone.extra["soa_email"], "admin@example.com")
@@ -93,6 +124,14 @@ def test_create_record(self):
93124
type = RecordType.A
94125
data = "200.150.100.50"
95126
record = self.driver.create_record(name, zone, type, data)
127+
128+
sent = LinodeMockHttpV4.history.pop()
129+
self.assertEqual(sent.method, "POST")
130+
self.assertEqual(sent.url, "/v4/domains/123/records")
131+
self.assertEqual(sent.json["name"], name)
132+
self.assertEqual(sent.json["type"], "A")
133+
self.assertEqual(sent.json["target"], data)
134+
96135
self.assertEqual(record.id, "123")
97136
self.assertEqual(record.name, name)
98137
self.assertEqual(record.type, "A")
@@ -104,6 +143,15 @@ def test_update_zone(self):
104143
ttl = 300
105144
extra = {"description": "Testing", "soa_email": "admin@example.com"}
106145
updated_zone = self.driver.update_zone(zone, domain, ttl=ttl, extra=extra)
146+
147+
sent = LinodeMockHttpV4.history.pop()
148+
self.assertEqual(sent.method, "PUT")
149+
self.assertEqual(sent.url, "/v4/domains/123")
150+
self.assertEqual(sent.json["domain"], domain)
151+
self.assertEqual(sent.json["ttl_sec"], ttl)
152+
self.assertEqual(sent.json["soa_email"], extra["soa_email"])
153+
self.assertEqual(sent.json["description"], extra["description"])
154+
107155
self.assertEqual(updated_zone.domain, domain)
108156
self.assertEqual(updated_zone.ttl, ttl)
109157
self.assertEqual(updated_zone.extra["soa_email"], extra["soa_email"])
@@ -116,6 +164,14 @@ def test_update_record(self):
116164
data = "200.150.100.50"
117165
extra = {"ttl_sec": 3600}
118166
updated = self.driver.update_record(record, name=name, data=data, extra=extra)
167+
168+
sent = LinodeMockHttpV4.history.pop()
169+
self.assertEqual(sent.method, "PUT")
170+
self.assertEqual(sent.url, "/v4/domains/123/records/123")
171+
self.assertEqual(sent.json["name"], name)
172+
self.assertEqual(sent.json["target"], data)
173+
self.assertEqual(sent.json["ttl_sec"], extra["ttl_sec"])
174+
119175
self.assertEqual(updated.name, name)
120176
self.assertEqual(updated.ttl, extra["ttl_sec"])
121177
self.assertEqual(updated.data, data)
@@ -124,14 +180,23 @@ def test_delete_zone(self):
124180
zone = self.driver.list_zones()[0]
125181
self.assertTrue(self.driver.delete_zone(zone))
126182

183+
sent = LinodeMockHttpV4.history.pop()
184+
self.assertEqual(sent.method, "DELETE")
185+
self.assertEqual(sent.url, "/v4/domains/123")
186+
127187
def test_delete_record(self):
128188
zone = self.driver.list_zones()[0]
129189
record = self.driver.list_records(zone)[0]
130190
self.assertTrue(self.driver.delete_record(record))
131191

192+
sent = LinodeMockHttpV4.history.pop()
193+
self.assertEqual(sent.method, "DELETE")
194+
self.assertEqual(sent.url, "/v4/domains/123/records/123")
195+
132196

133197
class LinodeMockHttpV4(MockHttp):
134198
fixtures = DNSFileFixtures("linode_v4")
199+
keep_history = True
135200

136201
def _v4_domains(self, method, url, body, headers):
137202
if method == "GET":

0 commit comments

Comments
 (0)