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), )
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
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__)
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)
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()
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)
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
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), )
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), )
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), )
def test_session_token(self): token = "foo.bar.sig" service = JsonApiService("foo", auth=MagicMock(token=token)) self.assertEqual(service.session.headers.get("Authorization"), token)
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)