예제 #1
0
    def test_jsonapi_error_with_link(self, request):
        error_title = "Title"
        error_detail = "Detail"
        error_href = "Href"

        request.return_value.status_code = HttpStatusCode.BadRequest
        request.return_value.text = (
            '{{"errors": [{{"title": "{}", "detail": "{}", "links": '
            '{{"about": "{}"}}}}]}}').format(error_title, error_detail,
                                             error_href)
        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 rewrite_errors=True)

        try:
            service.session.get("bar")
        except BadRequestError as e:
            assert e.args == ("\n    {}: {}\n        {}".format(
                error_title, error_detail, error_href), )

        request.return_value.text = (
            '{{"errors": [{{"title": "{}", "detail": "{}", "links": '
            '{{"about": {{"href": "{}"}}}}}}]}}').format(
                error_title, error_detail, error_href)
        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 rewrite_errors=True)

        try:
            service.session.get("bar")
        except BadRequestError as e:
            assert e.args == ("\n    {}: {}\n        {}".format(
                error_title, error_detail, error_href), )
예제 #2
0
    def test_proxy_called_jsonapi(self, request):
        request.return_value.status_code = HttpStatusCode.ProxyAuthenticationRequired

        class MySession(JsonApiSession):
            handle_proxy_authentication_called = 0
            handled = True

            def handle_proxy_authentication(self, method, url, **kwargs):
                MySession.handle_proxy_authentication_called += 1
                assert method == HttpRequestMethod.GET
                assert url == "bar"
                return MySession.handled

        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 session_class=MySession)
        service.session.get("bar")

        assert MySession.handle_proxy_authentication_called == 1

        MySession.handled = False
        with self.assertRaises(ProxyAuthenticationRequiredError):
            service.session.get("bar")

        assert MySession.handle_proxy_authentication_called == 2
예제 #3
0
 def test_client_session_header(self):
     service = JsonApiService("foo", auth=mock.MagicMock(token=FAKE_TOKEN))
     assert "X-Client-Session" in service.session.headers
     assert (service.session.headers[HttpHeaderKeys.ContentType] ==
             HttpHeaderValues.ApplicationVndApiJson)
     assert service.session.headers[
         HttpHeaderKeys.UserAgent] == "{}/{}".format(
             HttpHeaderValues.DlPython, __version__)
예제 #4
0
    def test_bad_json_session(self, request):
        request.return_value.status_code = HttpStatusCode.Ok

        class MySession(Session):
            pass

        with self.assertRaises(TypeError):
            JsonApiService("foo",
                           auth=mock.MagicMock(token=FAKE_TOKEN),
                           session_class=MySession)
예제 #5
0
    def test_good_json_session(self, request):
        request.return_value.status_code = HttpStatusCode.Ok

        class MySession(JsonApiSession):
            pass

        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 session_class=MySession)
        service.session.get("bar")

        request.assert_called()
예제 #6
0
    def test_session_warning(self, request, warn):
        message = "Warning"

        class result:
            status_code = HttpStatusCode.Ok

            def json(self):
                return {"meta": {"warnings": [{"message": message}]}}

        request.side_effect = lambda *args, **kw: result()
        service = JsonApiService("foo", auth=mock.MagicMock(token=FAKE_TOKEN))
        service.session.get("bar")
        warn.assert_called_once_with(message, UserWarning)
예제 #7
0
    def test_initialize_json_api_session(self, request):
        request.return_value.status_code = HttpStatusCode.Ok

        class MySession(JsonApiSession):
            initialize_called = 0

            def initialize(self):
                MySession.initialize_called += 1

        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 session_class=MySession)
        service.session.get("bar")

        assert MySession.initialize_called == 1
예제 #8
0
    def test_jsonapi_error(self, request):
        error_title = "Title"
        error_status = "Status"  # Should be ignored

        request.return_value.status_code = HttpStatusCode.BadRequest
        request.return_value.text = (
            '{{"errors": [{{"title": "{}", "status": "{}"}}]}}').format(
                error_title, error_status)
        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 rewrite_errors=True)

        try:
            service.session.get("bar")
        except BadRequestError as e:
            assert e.args == ("\n    {}".format(error_title), )
예제 #9
0
    def test_jsonapi_error_no_title(self, request):
        error_status = "Status"  # Should be used instead of the title
        error_detail = "Description"

        request.return_value.status_code = HttpStatusCode.BadRequest
        request.return_value.text = (
            '{{"errors": [{{"status": "{}", "detail": "{}"}}]}}').format(
                error_status, error_detail)
        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 rewrite_errors=True)

        try:
            service.session.get("bar")
        except BadRequestError as e:
            assert e.args == ("\n    {}: {}".format(error_status,
                                                    error_detail), )
예제 #10
0
    def test_jsonapi_error_with_source(self, request):
        error_title = "Title"
        error_detail = "Detail"
        error_field = "Field"

        request.return_value.status_code = HttpStatusCode.BadRequest
        request.return_value.text = (
            '{{"errors": [{{"title": "{}", "detail": "{}", "source": '
            '{{"pointer": "/path/to/{}"}}}}]}}').format(
                error_title, error_detail, error_field)
        service = JsonApiService("foo",
                                 auth=mock.MagicMock(token=FAKE_TOKEN),
                                 rewrite_errors=True)

        try:
            service.session.get("bar")
        except BadRequestError as e:
            assert e.args == ("\n    {}: {}: {}".format(
                error_title, error_detail, error_field), )
예제 #11
0
 def test_session_token(self):
     token = "foo.bar.sig"
     service = JsonApiService("foo", auth=MagicMock(token=token))
     self.assertEqual(service.session.headers.get("Authorization"), token)
예제 #12
0
 def test_session_token(self):
     service = JsonApiService("foo", auth=mock.MagicMock(token=FAKE_TOKEN))
     assert service.session.headers.get("Authorization") == add_bearer(
         FAKE_TOKEN)
 def test_client_session_header(self):
     service = JsonApiService("foo", auth=mock.MagicMock(token=FAKE_TOKEN))
     assert "X-Client-Session" in service.session.headers
 def test_session_token(self):
     service = JsonApiService("foo", auth=mock.MagicMock(token=FAKE_TOKEN))
     self.assertEqual(service.session.headers.get("Authorization"), FAKE_TOKEN)