Пример #1
0
    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',
        }
Пример #2
0
    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',
        }
Пример #3
0
    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',
        }
Пример #4
0
    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']",
        }
Пример #5
0
    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',
        }
Пример #6
0
    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',
                },
            ],
        }