summaryrefslogtreecommitdiff
path: root/tests/middleware_exceptions/tests.py
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2014-06-07 19:48:45 +0200
committerAymeric Augustin <aymeric.augustin@m4x.org>2014-06-07 19:48:45 +0200
commit47a9347b9828ed0186d676ee0c5cadd9e6a93edb (patch)
tree21635d3a88960911be72f3181c1892e306442f06 /tests/middleware_exceptions/tests.py
parentfc31319752945d4d39f70c8278ecd42af240bc64 (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.py44
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()