diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2014-06-07 19:48:45 +0200 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2014-06-07 19:48:45 +0200 |
| commit | 47a9347b9828ed0186d676ee0c5cadd9e6a93edb (patch) | |
| tree | 21635d3a88960911be72f3181c1892e306442f06 /tests/middleware_exceptions/tests.py | |
| parent | fc31319752945d4d39f70c8278ecd42af240bc64 (diff) | |
Fixed #6992 -- Improved error when middleware omits HttpResponse.
Thanks guettli for the report.
Diffstat (limited to 'tests/middleware_exceptions/tests.py')
| -rw-r--r-- | tests/middleware_exceptions/tests.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/middleware_exceptions/tests.py b/tests/middleware_exceptions/tests.py index 63f4fa7b70..473e726d8b 100644 --- a/tests/middleware_exceptions/tests.py +++ b/tests/middleware_exceptions/tests.py @@ -101,6 +101,17 @@ class BadExceptionMiddleware(TestMiddleware): raise TestException('Test Exception Exception') +# Sample middlewares that omit to return an HttpResonse +class NoTemplateResponseMiddleware(TestMiddleware): + def process_template_response(self, request, response): + super(NoTemplateResponseMiddleware, self).process_template_response(request, response) + + +class NoResponseMiddleware(TestMiddleware): + def process_response(self, request, response): + super(NoResponseMiddleware, self).process_response(request, response) + + @override_settings(ROOT_URLCONF='middleware_exceptions.urls') class BaseMiddlewareExceptionTest(TestCase): @@ -775,6 +786,39 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_middleware_usage(bad_middleware, True, True, False, True, True) self.assert_middleware_usage(post_middleware, True, True, False, True, True) + def test_process_response_no_response_middleware(self): + pre_middleware = TestMiddleware() + middleware = NoResponseMiddleware() + post_middleware = TestMiddleware() + self._add_middleware(post_middleware) + self._add_middleware(middleware) + self._add_middleware(pre_middleware) + self.assert_exceptions_handled('/middleware_exceptions/view/', [ + "NoResponseMiddleware.process_response didn't return an HttpResponse object. It returned None instead." + ], + ValueError()) + + # Check that the right middleware methods have been invoked + self.assert_middleware_usage(pre_middleware, True, True, False, False, False) + self.assert_middleware_usage(middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, True, False, True, False) + + def test_process_template_response_no_response_middleware(self): + pre_middleware = TestMiddleware() + middleware = NoTemplateResponseMiddleware() + post_middleware = TestMiddleware() + self._add_middleware(post_middleware) + self._add_middleware(middleware) + self._add_middleware(pre_middleware) + self.assert_exceptions_handled('/middleware_exceptions/template_response/', [ + "NoTemplateResponseMiddleware.process_template_response didn't return an HttpResponse object. It returned None instead." + ], + ValueError()) + + # Check that the right middleware methods have been invoked + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, True, True, False) + self.assert_middleware_usage(post_middleware, True, True, True, True, False) _missing = object() |
