Skip to content

Commit a89c6b7

Browse files
committed
test: add kwargs comparison for testing requests
1 parent be63eca commit a89c6b7

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

test/test_fingerprint_api.py

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from fingerprint_pro_server_api_sdk.api.fingerprint_api import FingerprintApi # noqa: E501
2323
from fingerprint_pro_server_api_sdk.rest import KnownApiException, ApiException
2424
from urllib.parse import urlencode
25+
from collections import Counter
2526

2627
API_KEY = 'private_key'
2728

@@ -88,22 +89,40 @@ def expect_request(self, *args, **kwargs):
8889
def get_mock_from_path(path):
8990
return path.split('/')[-1]
9091

92+
@staticmethod
93+
def _flatten(fields):
94+
flatten = []
95+
for k, obj in fields:
96+
if isinstance(obj, list):
97+
flatten.extend((k, v) for v in obj)
98+
else:
99+
flatten.append((k, obj))
100+
return flatten
101+
91102
def request(self, *args, **kwargs):
92103
self._tc.assertTrue(len(self._reqs) > 0)
93-
r = self._reqs.pop(0)
104+
(request_method, request_url), request_config = self._reqs.pop(0)
94105
status = 200
95-
if r[1].get('status') is not None:
96-
status = r[1].get('status')
97-
r[1].pop('status')
106+
if request_config.get('status') is not None:
107+
status = request_config.get('status')
108+
request_config.pop('status')
98109

99-
if r[1].get('method') != 'GET':
100-
request_path = r[0][1].split('?')[0]
110+
if request_config.get('method') != 'GET':
111+
request_path = request_url.split('?')[0]
101112
else:
102-
request_path = r[0][1]
113+
request_path = request_url
103114

104115
self._tc.maxDiff = None
105-
self._tc.assertEqual(r[0], args)
106-
self._tc.assertCountEqual(r[1], kwargs)
116+
self._tc.assertEqual(request_method, args[0])
117+
self._tc.assertEqual(request_url, args[1])
118+
119+
self._tc.assertEqual(set(request_config.keys()), set(kwargs.keys()))
120+
for k in request_config.keys() - { 'fields' }:
121+
self._tc.assertEqual(request_config[k], kwargs[k], msg=f"Mismatch on request key: '{k}'")
122+
123+
expected_fields = MockPoolManager._flatten(request_config.get('fields'))
124+
actual_fields = MockPoolManager._flatten(kwargs.get('fields'))
125+
self._tc.assertEqual(Counter(expected_fields), Counter(actual_fields), msg="fields on request do not match")
107126

108127
# TODO Add support for more complex paths?
109128
mock_file_by_first_argument = MockPoolManager.get_mock_from_path(request_path)

0 commit comments

Comments
 (0)