def test_render_problem(self): resp = middleware.ProblemResponse(middleware.Problem(), ) assert resp.media_type == 'application/problem+json' assert resp.debug is False assert resp.status_code == 500 assert json.loads(resp.body) == { 'type': 'about:blank', 'status': 500, 'title': 'Internal Server Error', }
def test_render_http_exception(self): resp = middleware.ProblemResponse(HTTPException(400, 'test error'), ) assert resp.media_type == 'application/problem+json' assert resp.debug is False assert resp.status_code == 400 assert json.loads(resp.body) == { 'type': 'about:blank', 'status': 400, 'title': 'Bad Request', 'detail': 'test error', }
def test_render_exception(self): resp = middleware.ProblemResponse(ValueError('test error'), ) assert resp.media_type == 'application/problem+json' assert resp.debug is False assert resp.status_code == 500 assert json.loads(resp.body) == { 'type': 'about:blank', 'status': 500, 'title': 'Unexpected Server Error', 'detail': 'test error', 'exc_type': 'ValueError', }
def test_render_other(self): resp = middleware.ProblemResponse(['some', 'other', 'data'], ) assert resp.media_type == 'application/problem+json' assert resp.debug is False assert resp.status_code == 500 assert json.loads(resp.body) == { 'type': 'about:blank', 'status': 500, 'title': 'Application Error', 'detail': 'Got unexpected content when trying to generate error response', 'content': "['some', 'other', 'data']", }
def test_render_with_headers(self): class CustomErr(middleware.Problem): headers = { 'custom-header': 'testing', } resp = middleware.ProblemResponse(CustomErr(), ) assert resp.media_type == 'application/problem+json' assert resp.debug is False assert resp.status_code == 500 assert resp.headers['custom-header'] == 'testing' assert json.loads(resp.body) == { 'type': 'about:blank', 'status': 500, 'title': 'Internal Server Error', }
def test_render_request_validation_error(self): resp = middleware.ProblemResponse( RequestValidationError( errors=[ErrorWrapper(ValueError('foo'), 'bar')], ), ) assert resp.media_type == 'application/problem+json' assert resp.debug is False assert resp.status_code == 400 assert json.loads(resp.body) == { 'type': 'about:blank', 'status': 400, 'title': 'Validation Error', 'detail': 'One or more user-provided parameters are invalid', 'errors': [ { 'loc': ['bar'], 'msg': 'foo', 'type': 'value_error', }, ], }