diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/generic_views/base.py | 1 | ||||
| -rw-r--r-- | tests/regressiontests/middleware_exceptions/tests.py | 313 | ||||
| -rw-r--r-- | tests/regressiontests/middleware_exceptions/urls.py | 3 | ||||
| -rw-r--r-- | tests/regressiontests/middleware_exceptions/views.py | 9 | ||||
| -rw-r--r-- | tests/regressiontests/templates/response.py | 174 | ||||
| -rw-r--r-- | tests/regressiontests/templates/tests.py | 1 | ||||
| -rw-r--r-- | tests/regressiontests/views/templates/debug/render_test.html | 1 |
7 files changed, 380 insertions, 122 deletions
diff --git a/tests/regressiontests/generic_views/base.py b/tests/regressiontests/generic_views/base.py index a1da98690b..f356c90a74 100644 --- a/tests/regressiontests/generic_views/base.py +++ b/tests/regressiontests/generic_views/base.py @@ -156,6 +156,7 @@ class TemplateViewTest(TestCase): rf = RequestFactory() def _assert_about(self, response): + response.render() self.assertEqual(response.status_code, 200) self.assertEqual(response.content, '<h1>About</h1>') diff --git a/tests/regressiontests/middleware_exceptions/tests.py b/tests/regressiontests/middleware_exceptions/tests.py index 5fee9a747c..e68cd52313 100644 --- a/tests/regressiontests/middleware_exceptions/tests.py +++ b/tests/regressiontests/middleware_exceptions/tests.py @@ -3,9 +3,10 @@ import sys from django.conf import settings from django.core.signals import got_request_exception from django.http import HttpResponse +from django.template.response import TemplateResponse +from django.template import Template from django.test import TestCase - class TestException(Exception): pass @@ -16,6 +17,7 @@ class TestMiddleware(object): self.process_request_called = False self.process_view_called = False self.process_response_called = False + self.process_template_response_called = False self.process_exception_called = False def process_request(self, request): @@ -24,6 +26,10 @@ class TestMiddleware(object): def process_view(self, request, view_func, view_args, view_kwargs): self.process_view_called = True + def process_template_response(self, request, response): + self.process_template_response_called = True + return response + def process_response(self, request, response): self.process_response_called = True return response @@ -48,6 +54,11 @@ class ResponseMiddleware(TestMiddleware): super(ResponseMiddleware, self).process_response(request, response) return HttpResponse('Response Middleware') +class TemplateResponseMiddleware(TestMiddleware): + def process_template_response(self, request, response): + super(TemplateResponseMiddleware, self).process_template_response(request, response) + return TemplateResponse(request, Template('Template Response Middleware')) + class ExceptionMiddleware(TestMiddleware): def process_exception(self, request, exception): super(ExceptionMiddleware, self).process_exception(request, exception) @@ -66,6 +77,11 @@ class BadViewMiddleware(TestMiddleware): super(BadViewMiddleware, self).process_view(request, view_func, view_args, view_kwargs) raise TestException('Test View Exception') +class BadTemplateResponseMiddleware(TestMiddleware): + def process_template_response(self, request, response): + super(BadTemplateResponseMiddleware, self).process_template_response(request, response) + raise TestException('Test Template Response Exception') + class BadResponseMiddleware(TestMiddleware): def process_response(self, request, response): super(BadResponseMiddleware, self).process_response(request, response) @@ -93,6 +109,7 @@ class BaseMiddlewareExceptionTest(TestCase): def _add_middleware(self, middleware): self.client.handler._request_middleware.insert(0, middleware.process_request) self.client.handler._view_middleware.insert(0, middleware.process_view) + self.client.handler._template_response_middleware.append(middleware.process_template_response) self.client.handler._response_middleware.append(middleware.process_response) self.client.handler._exception_middleware.append(middleware.process_exception) @@ -113,9 +130,10 @@ class BaseMiddlewareExceptionTest(TestCase): exception, value, tb = self.exceptions[i] self.assertEquals(value.args, (error, )) - def assert_middleware_usage(self, middleware, request, view, response, exception): + def assert_middleware_usage(self, middleware, request, view, template_response, response, exception): self.assertEqual(middleware.process_request_called, request) self.assertEqual(middleware.process_view_called, view) + self.assertEqual(middleware.process_template_response_called, template_response) self.assertEqual(middleware.process_response_called, response) self.assertEqual(middleware.process_exception_called, exception) @@ -132,9 +150,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_middleware(self): pre_middleware = TestMiddleware() @@ -146,9 +164,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_middleware(self): pre_middleware = TestMiddleware() @@ -160,9 +178,23 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, 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_middleware(self): + pre_middleware = TestMiddleware() + middleware = TemplateResponseMiddleware() + 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/', []) + + # Check that the right middleware methods have been invoked + self.assert_middleware_usage(pre_middleware, True, True, True, True, False) + self.assert_middleware_usage(middleware, True, True, True, True, False) + self.assert_middleware_usage(post_middleware, True, True, True, True, False) def test_process_exception_middleware(self): pre_middleware = TestMiddleware() @@ -174,9 +206,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, 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_request_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -188,9 +220,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -202,9 +234,23 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) + + def test_process_template_response_middleware_not_found(self): + pre_middleware = TestMiddleware() + middleware = TemplateResponseMiddleware() + post_middleware = TestMiddleware() + self._add_middleware(post_middleware) + self._add_middleware(middleware) + self._add_middleware(pre_middleware) + self.assert_exceptions_handled('/middleware_exceptions/not_found/', []) + + # Check that the right middleware methods have been invoked + self.assert_middleware_usage(pre_middleware, True, True, False, True, True) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) def test_process_response_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -216,9 +262,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, True) - self.assert_middleware_usage(middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, True) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) def test_process_exception_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -230,9 +276,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) def test_process_request_middleware_exception(self): pre_middleware = TestMiddleware() @@ -244,9 +290,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_middleware_exception(self): pre_middleware = TestMiddleware() @@ -258,9 +304,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_middleware_exception(self): pre_middleware = TestMiddleware() @@ -272,9 +318,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', ['Error in view'], Exception()) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, True) - self.assert_middleware_usage(middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, True) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) def test_process_exception_middleware_exception(self): pre_middleware = TestMiddleware() @@ -286,9 +332,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) def test_process_request_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -300,9 +346,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/null_view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -314,9 +360,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/null_view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -331,9 +377,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): ValueError()) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, 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_exception_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -348,9 +394,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): ValueError()) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, 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_request_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -362,9 +408,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -376,9 +422,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -390,9 +436,9 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, True) - self.assert_middleware_usage(middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, True) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) def test_process_exception_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -404,9 +450,18 @@ class MiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) + + def test_process_template_response_error(self): + middleware = TestMiddleware() + self._add_middleware(middleware) + self.assert_exceptions_handled('/middleware_exceptions/template_response_error/', []) + + # Check that the right middleware methods have been invoked + self.assert_middleware_usage(middleware, True, True, True, True, False) + class BadMiddlewareTests(BaseMiddlewareExceptionTest): @@ -420,9 +475,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', ['Test Request Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(bad_middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(bad_middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_bad_middleware(self): pre_middleware = TestMiddleware() @@ -434,9 +489,23 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', ['Test View Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) + + def test_process_template_response_bad_middleware(self): + pre_middleware = TestMiddleware() + bad_middleware = BadTemplateResponseMiddleware() + post_middleware = TestMiddleware() + self._add_middleware(post_middleware) + self._add_middleware(bad_middleware) + self._add_middleware(pre_middleware) + self.assert_exceptions_handled('/middleware_exceptions/template_response/', ['Test Template Response Exception']) + + # Check that the right middleware methods have been invoked + self.assert_middleware_usage(pre_middleware, True, True, False, False, False) + self.assert_middleware_usage(bad_middleware, True, True, True, False, False) + self.assert_middleware_usage(post_middleware, True, True, True, False, False) def test_process_response_bad_middleware(self): pre_middleware = TestMiddleware() @@ -448,9 +517,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', ['Test Response Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, False, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, False, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, True, False, True, False) def test_process_exception_bad_middleware(self): pre_middleware = TestMiddleware() @@ -462,9 +531,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/view/', []) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, True, False, True, False) def test_process_request_bad_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -476,9 +545,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test Request Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(bad_middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(bad_middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_bad_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -490,9 +559,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test View Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_bad_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -504,9 +573,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test Response Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, False, True) - self.assert_middleware_usage(bad_middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, False, True) + 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_exception_bad_middleware_not_found(self): pre_middleware = TestMiddleware() @@ -518,9 +587,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/not_found/', ['Test Exception Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + 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_request_bad_middleware_exception(self): pre_middleware = TestMiddleware() @@ -532,9 +601,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', ['Test Request Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(bad_middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(bad_middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_bad_middleware_exception(self): pre_middleware = TestMiddleware() @@ -546,9 +615,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', ['Test View Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_bad_middleware_exception(self): pre_middleware = TestMiddleware() @@ -560,9 +629,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', ['Error in view', 'Test Response Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, False, True) - self.assert_middleware_usage(bad_middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, False, True) + 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_exception_bad_middleware_exception(self): pre_middleware = TestMiddleware() @@ -574,9 +643,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/error/', ['Test Exception Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + 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_request_bad_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -588,9 +657,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/null_view/', ['Test Request Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(bad_middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(bad_middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_bad_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -602,9 +671,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/null_view/', ['Test View Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_bad_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -619,9 +688,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): ]) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, False, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, False, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, True, False, True, False) def test_process_exception_bad_middleware_null_view(self): pre_middleware = TestMiddleware() @@ -636,9 +705,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): ValueError()) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, True, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, True, False, True, False) def test_process_request_bad_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -650,9 +719,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test Request Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, False, True, False) - self.assert_middleware_usage(bad_middleware, True, False, True, False) - self.assert_middleware_usage(post_middleware, False, False, True, False) + self.assert_middleware_usage(pre_middleware, True, False, False, True, False) + self.assert_middleware_usage(bad_middleware, True, False, False, True, False) + self.assert_middleware_usage(post_middleware, False, False, False, True, False) def test_process_view_bad_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -664,9 +733,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test View Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, False) - self.assert_middleware_usage(post_middleware, True, False, True, False) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, False) + self.assert_middleware_usage(post_middleware, True, False, False, True, False) def test_process_response_bad_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -678,9 +747,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test Response Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, False, True) - self.assert_middleware_usage(bad_middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, False, True) + 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_exception_bad_middleware_permission_denied(self): pre_middleware = TestMiddleware() @@ -692,9 +761,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): self.assert_exceptions_handled('/middleware_exceptions/permission_denied/', ['Test Exception Exception']) # Check that the right middleware methods have been invoked - self.assert_middleware_usage(pre_middleware, True, True, True, False) - self.assert_middleware_usage(bad_middleware, True, True, True, True) - self.assert_middleware_usage(post_middleware, True, True, True, True) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, False, True, True) + self.assert_middleware_usage(post_middleware, True, True, False, True, True) _missing = object() diff --git a/tests/regressiontests/middleware_exceptions/urls.py b/tests/regressiontests/middleware_exceptions/urls.py index 5b477a4ede..37d47f796a 100644 --- a/tests/regressiontests/middleware_exceptions/urls.py +++ b/tests/regressiontests/middleware_exceptions/urls.py @@ -9,4 +9,7 @@ urlpatterns = patterns('', (r'^error/$', views.server_error), (r'^null_view/$', views.null_view), (r'^permission_denied/$', views.permission_denied), + + (r'^template_response/$', views.template_response), + (r'^template_response_error/$', views.template_response_error), ) diff --git a/tests/regressiontests/middleware_exceptions/views.py b/tests/regressiontests/middleware_exceptions/views.py index 96dbd05095..ddf28c46a3 100644 --- a/tests/regressiontests/middleware_exceptions/views.py +++ b/tests/regressiontests/middleware_exceptions/views.py @@ -1,9 +1,18 @@ from django import http from django.core.exceptions import PermissionDenied +from django.template import Template +from django.template.response import TemplateResponse + def normal_view(request): return http.HttpResponse('OK') +def template_response(request): + return TemplateResponse(request, Template('OK')) + +def template_response_error(request): + return TemplateResponse(request, Template('{%')) + def not_found(request): raise http.Http404() diff --git a/tests/regressiontests/templates/response.py b/tests/regressiontests/templates/response.py new file mode 100644 index 0000000000..8bdf7f4196 --- /dev/null +++ b/tests/regressiontests/templates/response.py @@ -0,0 +1,174 @@ +import os +from django.utils import unittest +from django.test import RequestFactory +from django.conf import settings +import django.template.context +from django.template import Template, Context, RequestContext +from django.template.response import (TemplateResponse, SimpleTemplateResponse, + ContentNotRenderedError) + +def test_processor(request): + return {'processors': 'yes'} +test_processor_name = 'regressiontests.templates.response.test_processor' + +class BaseTemplateResponseTest(unittest.TestCase): + # tests rely on fact that global context + # processors should only work when RequestContext is used. + + def setUp(self): + self.factory = RequestFactory() + self._old_processors = settings.TEMPLATE_CONTEXT_PROCESSORS + self._old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS + settings.TEMPLATE_CONTEXT_PROCESSORS = [test_processor_name] + settings.TEMPLATE_DIRS = ( + os.path.join( + os.path.dirname(__file__), + 'templates' + ), + ) + # Force re-evaluation of the contex processor list + django.template.context._standard_context_processors = None + + def tearDown(self): + settings.TEMPLATE_DIRS = self._old_TEMPLATE_DIRS + settings.TEMPLATE_CONTEXT_PROCESSORS = self._old_processors + # Force re-evaluation of the contex processor list + django.template.context._standard_context_processors = None + + +class SimpleTemplateResponseTest(BaseTemplateResponseTest): + + def _response(self, template='foo', *args, **kwargs): + return SimpleTemplateResponse(Template(template), *args, **kwargs) + + def test_template_resolving(self): + response = SimpleTemplateResponse('first/test.html') + response.render() + self.assertEqual('First template\n', response.content) + + templates = ['foo.html', 'second/test.html', 'first/test.html'] + response = SimpleTemplateResponse(templates) + response.render() + self.assertEqual('Second template\n', response.content) + + response = self._response() + response.render() + self.assertEqual(response.content, 'foo') + + def test_explicit_baking(self): + # explicit baking + response = self._response() + self.assertFalse(response.is_rendered) + response.render() + self.assertTrue(response.is_rendered) + + def test_render(self): + # response is not re-rendered without the render call + response = self._response().render() + self.assertEqual(response.content, 'foo') + + # rebaking doesn't change the rendered content + response.template_name = Template('bar{{ baz }}') + response.render() + self.assertEqual(response.content, 'foo') + + # but rendered content can be overridden by manually + # setting content + response.content = 'bar' + self.assertEqual(response.content, 'bar') + + def test_iteration_unrendered(self): + # unrendered response raises an exception on iteration + response = self._response() + self.assertFalse(response.is_rendered) + + def iteration(): + for x in response: + pass + self.assertRaises(ContentNotRenderedError, iteration) + self.assertFalse(response.is_rendered) + + def test_iteration_rendered(self): + # iteration works for rendered responses + response = self._response().render() + res = [x for x in response] + self.assertEqual(res, ['foo']) + + def test_content_access_unrendered(self): + # unrendered response raises an exception when content is accessed + response = self._response() + self.assertFalse(response.is_rendered) + self.assertRaises(ContentNotRenderedError, lambda: response.content) + self.assertFalse(response.is_rendered) + + def test_content_access_rendered(self): + # rendered response content can be accessed + response = self._response().render() + self.assertEqual(response.content, 'foo') + + def test_set_content(self): + # content can be overriden + response = self._response() + self.assertFalse(response.is_rendered) + response.content = 'spam' + self.assertTrue(response.is_rendered) + self.assertEqual(response.content, 'spam') + response.content = 'baz' + self.assertEqual(response.content, 'baz') + + def test_dict_context(self): + response = self._response('{{ foo }}{{ processors }}', + {'foo': 'bar'}) + self.assertEqual(response.context_data, {'foo': 'bar'}) + response.render() + self.assertEqual(response.content, 'bar') + + def test_context_instance(self): + response = self._response('{{ foo }}{{ processors }}', + Context({'foo': 'bar'})) + self.assertEqual(response.context_data.__class__, Context) + response.render() + self.assertEqual(response.content, 'bar') + + def test_kwargs(self): + response = self._response(content_type = 'application/json', status=504) + self.assertEqual(response['content-type'], 'application/json') + self.assertEqual(response.status_code, 504) + + def test_args(self): + response = SimpleTemplateResponse('', {}, 'application/json', 504) + self.assertEqual(response['content-type'], 'application/json') + self.assertEqual(response.status_code, 504) + + +class TemplateResponseTest(BaseTemplateResponseTest): + + def _response(self, template='foo', *args, **kwargs): + return TemplateResponse(self.factory.get('/'), Template(template), + *args, **kwargs) + + def test_render(self): + response = self._response('{{ foo }}{{ processors }}').render() + self.assertEqual(response.content, 'yes') + + def test_render_with_requestcontext(self): + response = self._response('{{ foo }}{{ processors }}', + {'foo': 'bar'}).render() + self.assertEqual(response.content, 'baryes') + + def test_render_with_context(self): + response = self._response('{{ foo }}{{ processors }}', + Context({'foo': 'bar'})).render() + self.assertEqual(response.content, 'bar') + + def test_kwargs(self): + response = self._response(content_type = 'application/json', + status=504) + self.assertEqual(response['content-type'], 'application/json') + self.assertEqual(response.status_code, 504) + + def test_args(self): + response = TemplateResponse(self.factory.get('/'), '', {}, + 'application/json', 504) + self.assertEqual(response['content-type'], 'application/json') + self.assertEqual(response.status_code, 504) diff --git a/tests/regressiontests/templates/tests.py b/tests/regressiontests/templates/tests.py index 326eb0a471..405b333add 100644 --- a/tests/regressiontests/templates/tests.py +++ b/tests/regressiontests/templates/tests.py @@ -28,6 +28,7 @@ from parser import ParserTests from unicode import UnicodeTests from nodelist import NodelistTest from smartif import * +from response import * try: from loaders import * diff --git a/tests/regressiontests/views/templates/debug/render_test.html b/tests/regressiontests/views/templates/debug/render_test.html new file mode 100644 index 0000000000..259cb80a5c --- /dev/null +++ b/tests/regressiontests/views/templates/debug/render_test.html @@ -0,0 +1 @@ +{{ foo }}.{{ bar }}.{{ baz }}.{{ processors }} |
