Skip to content

Commit 60b7636

Browse files
test: add remaining tests
1 parent 691d02a commit 60b7636

File tree

1 file changed

+79
-5
lines changed

1 file changed

+79
-5
lines changed

test/test_fingerprint_api.py

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,14 @@
6161
MOCK_UPDATE_EVENT_404 = '404_request_not_found.json' # errors/
6262
MOCK_UPDATE_EVENT_409 = '409_state_not_ready.json' # errors/
6363

64-
MOCK_GET_RELATED_VISITORS_200= 'related-visitors/get_related_visitors_200.json'
64+
MOCK_GET_RELATED_VISITORS_200 = 'related-visitors/get_related_visitors_200.json'
65+
MOCK_GET_RELATED_VISITORS_400 = '400_visitor_id_invalid.json' # errors/
66+
MOCK_GET_RELATED_VISITORS_403 = '403_feature_not_enabled.json' # errors/
67+
MOCK_GET_RELATED_VISITORS_404 = '404_visitor_not_found.json' # errors/
68+
MOCK_GET_RELATED_VISITORS_429 = '429_too_many_requests.json' # errors/
6569

66-
class MockPoolManager(object):
6770

71+
class MockPoolManager(object):
6872

6973
def __init__(self, tc, request_headers=None):
7074
if request_headers is None:
@@ -126,7 +130,8 @@ def request(self, *args, **kwargs):
126130
return urllib3.HTTPResponse(status=status, body=answer_mock, headers=self.request_headers)
127131
except IOError as e:
128132
print(e)
129-
return urllib3.HTTPResponse(status=200, body='{"visitorId": "%s", "visits": []}' % mock_file_by_first_argument)
133+
return urllib3.HTTPResponse(status=200,
134+
body='{"visitorId": "%s", "visits": []}' % mock_file_by_first_argument)
130135
pass
131136

132137

@@ -312,7 +317,6 @@ def test_get_event_empty_data(self):
312317
value = getattr(response.products, field)
313318
self.assertIsNone(value, f"Signal '{field}' is not empty")
314319

315-
316320
def test_get_visits_empty_answer(self):
317321
"""Test checks correct code running in case of there is no visits"""
318322
mock_pool = MockPoolManager(self)
@@ -578,12 +582,82 @@ def test_get_related_visitors(self):
578582
mock_pool = MockPoolManager(self)
579583
self.api.api_client.rest_client.pool_manager = mock_pool
580584
mock_pool.expect_request('GET', TestFingerprintApi.get_related_visitors_path(),
581-
fields=[self.integration_info, ('visitor_id', MOCK_GET_RELATED_VISITORS_200)], headers=self.request_headers,
585+
fields=[self.integration_info, ('visitor_id', MOCK_GET_RELATED_VISITORS_200)],
586+
headers=self.request_headers,
582587
preload_content=True, timeout=None)
583588

584589
response = self.api.get_related_visitors(MOCK_GET_RELATED_VISITORS_200)
585590
self.assertIsInstance(response, RelatedVisitorsResponse)
586591

592+
def test_get_related_visitors_400(self):
593+
"""Test that related visitors returns 400 error"""
594+
mock_pool = MockPoolManager(self)
595+
self.api.api_client.rest_client.pool_manager = mock_pool
596+
597+
mock_pool.expect_request('GET',
598+
TestFingerprintApi.get_related_visitors_path(),
599+
fields=[self.integration_info, ('visitor_id', MOCK_GET_RELATED_VISITORS_400)],
600+
headers=self.request_headers, preload_content=True, timeout=None, status=400,
601+
)
602+
603+
with self.assertRaises(KnownApiException) as context:
604+
self.api.get_related_visitors(MOCK_GET_RELATED_VISITORS_400)
605+
self.assertEqual(context.exception.status, 400)
606+
self.assertIsInstance(context.exception.structured_error, ErrorResponse)
607+
self.assertEqual(context.exception.structured_error.error.code, ErrorCode.REQUESTCANNOTBEPARSED)
608+
609+
def test_get_related_visitors_403(self):
610+
"""Test that related visitors returns 403 error"""
611+
mock_pool = MockPoolManager(self)
612+
self.api.api_client.rest_client.pool_manager = mock_pool
613+
614+
mock_pool.expect_request('GET',
615+
TestFingerprintApi.get_related_visitors_path(),
616+
fields=[self.integration_info, ('visitor_id', MOCK_GET_RELATED_VISITORS_403)],
617+
headers=self.request_headers, preload_content=True, timeout=None, status=403,
618+
)
619+
620+
with self.assertRaises(KnownApiException) as context:
621+
self.api.get_related_visitors(MOCK_GET_RELATED_VISITORS_403)
622+
self.assertEqual(context.exception.status, 403)
623+
self.assertIsInstance(context.exception.structured_error, ErrorResponse)
624+
self.assertEqual(context.exception.structured_error.error.code, ErrorCode.FEATURENOTENABLED)
625+
626+
def test_get_related_visitors_404(self):
627+
"""Test that related visitors returns 404 error"""
628+
mock_pool = MockPoolManager(self)
629+
self.api.api_client.rest_client.pool_manager = mock_pool
630+
631+
mock_pool.expect_request('GET',
632+
TestFingerprintApi.get_related_visitors_path(),
633+
fields=[self.integration_info, ('visitor_id', MOCK_GET_RELATED_VISITORS_404)],
634+
headers=self.request_headers, preload_content=True, timeout=None, status=404,
635+
)
636+
637+
with self.assertRaises(KnownApiException) as context:
638+
self.api.get_related_visitors(MOCK_GET_RELATED_VISITORS_404)
639+
self.assertEqual(context.exception.status, 404)
640+
self.assertIsInstance(context.exception.structured_error, ErrorResponse)
641+
self.assertEqual(context.exception.structured_error.error.code, ErrorCode.VISITORNOTFOUND)
642+
643+
def test_get_related_visitors_429(self):
644+
"""Test that related visitors returns 429 error"""
645+
mock_pool = MockPoolManager(self, request_headers={'Retry-After': '4'})
646+
self.api.api_client.rest_client.pool_manager = mock_pool
647+
648+
mock_pool.expect_request('GET',
649+
TestFingerprintApi.get_related_visitors_path(),
650+
fields=[self.integration_info, ('visitor_id', MOCK_GET_RELATED_VISITORS_429)],
651+
headers=self.request_headers, preload_content=True, timeout=None, status=429,
652+
)
653+
654+
with self.assertRaises(KnownApiException) as context:
655+
self.api.get_related_visitors(MOCK_GET_RELATED_VISITORS_429)
656+
self.assertEqual(context.exception.status, 429)
657+
self.assertIsInstance(context.exception.structured_error, ErrorResponse)
658+
self.assertEqual(context.exception.structured_error.error.code, ErrorCode.TOOMANYREQUESTS)
659+
self.assertEqual(context.exception.structured_error.retry_after, 4)
660+
587661

588662
if __name__ == '__main__':
589663
unittest.main()

0 commit comments

Comments
 (0)