Skip to content

Commit

Permalink
Additional tests for the connection class code
Browse files Browse the repository at this point in the history
  • Loading branch information
by-cx committed Aug 30, 2018
1 parent 91ac2d2 commit 3a71997
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
4 changes: 4 additions & 0 deletions libcloud_dnsimple_v2_driver/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@ def __init__(self, user_id, key, secure=True, host=None, port=None,

def request(self, action, params=None, data=None, headers=None,
method='GET', raw=False):
if not headers:
headers = {}

headers["Accept-Encoding"] = "plain"

self.response = requests.request(
method=method.lower(),
url="".join([self.host, action]),
Expand Down
85 changes: 85 additions & 0 deletions libcloud_dnsimple_v2_driver/test_connection.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
import unittest

import requests_mock

from libcloud_dnsimple_v2_driver.connection import LibCloudRequest


@requests_mock.Mocker()
class LibCloudRequestTests(unittest.TestCase):
connection = None
_test_url = "https://ifconfig.co/json"
_response_json = {"ip": "46.101.192.233", "ip_decimal": 778420457, "country": "Germany", "country_eu": True,
"country_iso": "DE", "city": "Frankfurt am Main", "latitude": 50.1153, "longitude": 8.6823}
_response_text = '{"ip":"46.101.192.233","ip_decimal":778420457,"country":"Germany",' +\
'"country_eu":true,"country_iso":"DE","city":"Frankfurt am Main",' +\
'"latitude":50.1153,"longitude":8.6823}'

def setUp(self):
self.connection = LibCloudRequest("user", "key")
self.connection.host = "https://ifconfig.co"

def set_mock_requests(self, m):
m.get(self._test_url,
#json=self._response_json,
text=self._response_text,
status_code=200,
headers={
"cf-ray": "4528d1ce3bff9ac4-FRA",
"content-encoding": "br",
"content-type": "application/json",
"date": "Thu, 30 Aug 2018 17:01:28 GMT",
"expect-ct": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"",
"server": "cloudflare",
"status": "200",
"via": "1.1 vegur",
})

def test_request(self, m):
self.set_mock_requests(m)
response = self.connection.request("/json")

self.assertEqual(response, self.connection)
self.assertEqual(response.object["ip"], "46.101.192.233")

def test_getresponse(self, m):
self.set_mock_requests(m)
self.connection.request("/json")
response = self.connection.getresponse()

self.assertEqual(response, self.connection)

def test_getheaders(self, m):
self.set_mock_requests(m)
self.connection.request("/json")
headers = self.connection.getheaders()

self.assertNotIn("content-encoding", headers.keys())

def test_status(self, m):
self.set_mock_requests(m)
self.connection.request("/json")

self.assertEqual(self.connection.status, 200)

def test_reason(self, m):
self.set_mock_requests(m)
self.connection.request("/json")

self.assertEqual(self.connection.reason, self._response_text)

def test_connect(self, m):
self.set_mock_requests(m)
self.assertEqual(self.connection.connect(), None)

def test_read(self, m):
self.set_mock_requests(m)
self.connection.request("/json")
data = self.connection.read()

self.assertEqual(data, self._response_text.encode("utf-8"))

def test_close(self, m):
self.set_mock_requests(m)
self.connection.request("/json")
self.connection.close()

0 comments on commit 3a71997

Please sign in to comment.