def test_stream_with_regular_exceptions(self, error_translator, session, url): svc = HTTPService(session, error_translator) session.request.return_value.iter_content.side_effect = ValueError with pytest.raises(ValueError): list(svc.stream("GET", url))
def test_it_passes_arbitrary_kwargs_to_requests(self, svc): session = Mock() svc = HTTPService(session) svc.request("GET", "https://example.com", foo="bar") assert session.request.call_args[1]["foo"] == "bar"
def test_request_with_regular_exceptions(self, error_translator, session, url): svc = HTTPService(session, error_translator) session.request.side_effect = ValueError with pytest.raises(ValueError): svc.request("GET", url)
def test_with_custom_exceptions(self, error_translator, session, url): svc = HTTPService(session, error_translator) session.request.side_effect = FileNotFoundError with pytest.raises(NotADirectoryError): svc.request("GET", url)
def test_it_raises_if_sending_the_request_fails(self, exception, session): session.request.side_effect = exception svc = HTTPService(session) with pytest.raises(UpstreamServiceError) as exc_info: svc.request("GET", "https://example.com") assert exc_info.value.response is None assert exc_info.value.__cause__ == exception
def test_request_with_error_translator_defaults( self, error_translator, session, request_exception, expected_exception, url, ): svc = HTTPService(session, error_translator) session.request.side_effect = request_exception with pytest.raises(expected_exception): svc.request("GET", url)
def __init__(self, credentials_list, resource_keys): """Initialise the service. :param credentials_list: A list of dicts of credentials info as provided by Google console's JSON format. :param resource_keys: A dict of file ids to resource keys, to fill out any missing resource keys. :raises ConfigurationError: If the credentials are not accepted by Google """ if credentials_list[0].get("disable"): LOG.error("Google Drive credentials have been disabled") return self._resource_keys = resource_keys try: credentials = Credentials.from_service_account_info( credentials_list[0], scopes=self.SCOPES) except ValueError as exc: raise ConfigurationError( "The Google Drive service account information is invalid" ) from exc self._http_service = HTTPService( session=AuthorizedSession(credentials, refresh_timeout=self.TIMEOUT), error_translator=translate_google_error, )
def test_stream_with_error_translator_defaults( self, error_translator, session, generator_exception, expected_exception, url, ): svc = HTTPService(session, error_translator) def explode(): yield b"response-part-1" raise generator_exception session.request.return_value.iter_content.return_value = explode() with pytest.raises(expected_exception): list(svc.stream("GET", url))
def test_it_uses_custom_timeouts(self, session): svc = HTTPService(session) svc.request("GET", "https://example.com", timeout=3) assert session.request.call_args[1]["timeout"] == 3
def svc(self): return HTTPService()