Esempio n. 1
0
    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))
Esempio n. 2
0
    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"
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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
Esempio n. 6
0
    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)
Esempio n. 7
0
    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,
        )
Esempio n. 8
0
    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))
Esempio n. 9
0
    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
Esempio n. 10
0
 def svc(self):
     return HTTPService()