def test_valid(self, requests_mock, last_updated_after, next_page): """ Test if `get_company_update_page` returns the right response on the happy-path. """ expected_response = { 'previous': None, 'next': f'{DNB_UPDATES_URL}?cursor=next-cursor', 'results': [ { 'key': 'value' }, ], } mocker = requests_mock.get( next_page if next_page else DNB_UPDATES_URL, status_code=status.HTTP_200_OK, json=expected_response, ) response = get_company_update_page(last_updated_after, next_page) if next_page: assert mocker.last_request.url == next_page else: assert mocker.last_request.qs.get('last_updated_after') == [ last_updated_after ] assert response == expected_response
def _get_company_updates_from_api(last_updated_after, next_page, task): try: return get_company_update_page(last_updated_after, next_page) except DNBServiceError as exc: if is_server_error(exc.status_code): raise task.retry(exc=exc, countdown=60) raise except (DNBServiceConnectionError, DNBServiceTimeoutError) as exc: raise task.retry(exc=exc, countdown=60)
def test_get_company_dnb_service_request_error( self, caplog, requests_mock, request_exception, expected_exception, expected_message, ): """ Test if there is an error connecting to dnb-service, we log it and raise the exception with an appropriate message. """ requests_mock.get( DNB_UPDATES_URL, exc=request_exception, ) with pytest.raises(expected_exception) as excinfo: get_company_update_page(last_updated_after='foo') assert str(excinfo.value) == expected_message
def test_dnb_service_error( self, caplog, requests_mock, dnb_response_status, ): """ Test if the dnb-service returns a status code that is not 200, we log it and raise the exception with an appropriate message. """ requests_mock.get( DNB_UPDATES_URL, status_code=dnb_response_status, ) with pytest.raises(DNBServiceError) as e: get_company_update_page(last_updated_after='foo') expected_message = f'DNB service returned an error status: {dnb_response_status}' assert e.value.args[0] == expected_message assert len(caplog.records) == 1 assert caplog.records[0].getMessage() == expected_message