Skip to content
This repository was archived by the owner on Mar 4, 2026. It is now read-only.

Commit 0d00154

Browse files
committed
test: use requests_mock to enable call_api logic tests
1 parent a228e2b commit 0d00154

3 files changed

Lines changed: 34 additions & 14 deletions

File tree

packet/Manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(self, auth_token, consumer_token=None):
1616
super(Manager, self).__init__(auth_token, consumer_token)
1717

1818
def call_api(self, method, type='GET', params=None):
19-
return super(Manager, self).call_api(method, type, params) # pragma: no cover
19+
return super(Manager, self).call_api(method, type, params)
2020

2121
def get_user(self):
2222
return self.call_api("user")

packet/baseapi.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def __init__(self, auth_token, consumer_token):
3232
self.end_point = 'api.packet.net'
3333
self._log = logging.getLogger(__name__)
3434

35-
def call_api(self, method, type='GET', params=None): # pragma: no cover
35+
def call_api(self, method, type='GET', params=None): # noqa
3636
if params is None:
3737
params = {}
3838

@@ -57,22 +57,22 @@ def call_api(self, method, type='GET', params=None): # pragma: no cover
5757
resp = requests.delete(url, headers=headers)
5858
elif type == 'PATCH':
5959
resp = requests.patch(url, headers=headers, data=json.dumps(params))
60-
else:
60+
else: # pragma: no cover
6161
raise Error('method type not recognized as one of GET, POST, DELETE or PATCH: %s' % type)
62-
except requests.exceptions.RequestException as e:
62+
except requests.exceptions.RequestException as e: # pragma: no cover
6363
raise Error('Communcations error: %s' % str(e), e)
6464

6565
if not resp.content:
6666
data = None
6767
elif resp.headers.get("content-type", "").startswith("application/json"):
6868
try:
6969
data = resp.json()
70-
except ValueError as e:
70+
except ValueError as e: # pragma: no cover
7171
raise JSONReadError('Read failed: %s' % e.message, e)
7272
else:
73-
data = resp.content
73+
data = resp.content # pragma: no cover
7474

75-
if not resp.ok:
75+
if not resp.ok: # pragma: no cover
7676
msg = data
7777
if not data:
7878
msg = "(empty response)"
@@ -82,7 +82,7 @@ def call_api(self, method, type='GET', params=None): # pragma: no cover
8282

8383
try:
8484
resp.raise_for_status()
85-
except requests.HTTPError as e:
85+
except requests.HTTPError as e: # pragma: no cover
8686
raise Error('Error {0}: {1}'.format(resp.status_code, resp.reason), e)
8787

8888
self.meta = None
@@ -94,7 +94,7 @@ def call_api(self, method, type='GET', params=None): # pragma: no cover
9494

9595
return data
9696

97-
def _parse_params(self, params): # pragma: no cover
97+
def _parse_params(self, params):
9898
vals = list()
9999
for k, v in params.items():
100100
vals.append(str("%s=%s" % (k, v)))

test/test_packet.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import sys
22
import json
33
import unittest
4+
45
import packet
6+
import requests_mock
57

68

79
class PacketManagerTest(unittest.TestCase):
@@ -201,12 +203,30 @@ def test_validate_capacity(self):
201203
class PacketMockManager(packet.Manager):
202204

203205
def call_api(self, method, type='GET', params=None):
204-
if type == 'DELETE':
205-
return None
206-
else:
206+
with requests_mock.Mocker() as m:
207+
mock = {
208+
'DELETE': m.delete,
209+
'GET': m.get,
210+
'PUT': m.put,
211+
'POST': m.post,
212+
'PATCH': m.patch,
213+
}[type]
214+
215+
if type == 'DELETE':
216+
mock(requests_mock.ANY)
217+
return super(PacketMockManager, self).call_api(method, type, params)
218+
207219
fixture = '%s_%s' % (type.lower(), method.lower())
208-
with open('test/fixtures/%s.json' % (fixture.replace('/', '_').split("?")[0])) as data_file:
209-
return json.load(data_file)
220+
fixture = fixture.replace('/', '_').split('?')[0]
221+
fixture = 'test/fixtures/%s.json' % fixture
222+
223+
headers = {'content-type': 'application/json'}
224+
225+
with open(fixture) as data_file:
226+
j = json.load(data_file)
227+
228+
mock(requests_mock.ANY, headers=headers, json=j)
229+
return super(PacketMockManager, self).call_api(method, type, params)
210230

211231

212232
if __name__ == '__main__':

0 commit comments

Comments
 (0)