diff options
| author | Russell Keith-Magee <russell@keith-magee.com> | 2011-01-16 15:38:03 +0000 |
|---|---|---|
| committer | Russell Keith-Magee <russell@keith-magee.com> | 2011-01-16 15:38:03 +0000 |
| commit | f89f1c8acbf5f9d13d52855c49bef53360b1a6e2 (patch) | |
| tree | ec23ab427fb722eb1e9fe8e08970f64ed856b530 /tests | |
| parent | 4d654c92ce5565b22fd18d5d0ffc2c9efe391497 (diff) | |
Fixed #15083 -- Corrected the order of TemplateResponse middleware handling, ensuring that custom URLConfs are valid, and that ResponseMiddleware is invoked if the TemplateResponseMiddleware causes errors. Thanks to Sayane for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@15226 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/regressiontests/middleware_exceptions/tests.py | 6 | ||||
| -rw-r--r-- | tests/regressiontests/templates/alternate_urls.py | 11 | ||||
| -rw-r--r-- | tests/regressiontests/templates/response.py | 29 | ||||
| -rw-r--r-- | tests/regressiontests/templates/templates/response.html | 1 | ||||
| -rw-r--r-- | tests/regressiontests/templates/views.py | 9 |
5 files changed, 52 insertions, 4 deletions
diff --git a/tests/regressiontests/middleware_exceptions/tests.py b/tests/regressiontests/middleware_exceptions/tests.py index e68cd52313..e0617076a3 100644 --- a/tests/regressiontests/middleware_exceptions/tests.py +++ b/tests/regressiontests/middleware_exceptions/tests.py @@ -503,9 +503,9 @@ class BadMiddlewareTests(BaseMiddlewareExceptionTest): 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) + self.assert_middleware_usage(pre_middleware, True, True, False, True, False) + self.assert_middleware_usage(bad_middleware, True, True, True, True, False) + self.assert_middleware_usage(post_middleware, True, True, True, True, False) def test_process_response_bad_middleware(self): pre_middleware = TestMiddleware() diff --git a/tests/regressiontests/templates/alternate_urls.py b/tests/regressiontests/templates/alternate_urls.py new file mode 100644 index 0000000000..31590a5dbc --- /dev/null +++ b/tests/regressiontests/templates/alternate_urls.py @@ -0,0 +1,11 @@ +# coding: utf-8 +from django.conf.urls.defaults import * +from regressiontests.templates import views + +urlpatterns = patterns('', + # View returning a template response + (r'^template_response_view/', views.template_response_view), + + # A view that can be hard to find... + url(r'^snark/', views.snark, name='snark'), +) diff --git a/tests/regressiontests/templates/response.py b/tests/regressiontests/templates/response.py index 2f0d2c7822..f658b35ac3 100644 --- a/tests/regressiontests/templates/response.py +++ b/tests/regressiontests/templates/response.py @@ -1,6 +1,6 @@ import os from django.utils import unittest -from django.test import RequestFactory +from django.test import RequestFactory, TestCase from django.conf import settings import django.template.context from django.template import Template, Context, RequestContext @@ -11,6 +11,13 @@ def test_processor(request): return {'processors': 'yes'} test_processor_name = 'regressiontests.templates.response.test_processor' + +# A test middleware that installs a temporary URLConf +class CustomURLConfMiddleware(object): + def process_request(self, request): + request.urlconf = 'regressiontests.templates.alternate_urls' + + class BaseTemplateResponseTest(unittest.TestCase): # tests rely on fact that global context # processors should only work when RequestContext is used. @@ -179,3 +186,23 @@ class TemplateResponseTest(BaseTemplateResponseTest): rc = response.resolve_context(response.context_data) self.assertEqual(rc.current_app, 'foobar') + + +class CustomURLConfTest(TestCase): + urls = 'regressiontests.templates.urls' + + def setUp(self): + self.old_MIDDLEWARE_CLASSES = settings.MIDDLEWARE_CLASSES + settings.MIDDLEWARE_CLASSES = list(settings.MIDDLEWARE_CLASSES) + [ + 'regressiontests.templates.response.CustomURLConfMiddleware' + ] + + def tearDown(self): + settings.MIDDLEWARE_CLASSES = self.old_MIDDLEWARE_CLASSES + + def test_custom_urlconf(self): + response = self.client.get('/template_response_view/') + self.assertEqual(response.status_code, 200) + self.assertEqual(response.content, 'This is where you can find the snark: /snark/') + + diff --git a/tests/regressiontests/templates/templates/response.html b/tests/regressiontests/templates/templates/response.html new file mode 100644 index 0000000000..7c442fb453 --- /dev/null +++ b/tests/regressiontests/templates/templates/response.html @@ -0,0 +1 @@ +{% load url from future %}This is where you can find the snark: {% url "snark" %}
\ No newline at end of file diff --git a/tests/regressiontests/templates/views.py b/tests/regressiontests/templates/views.py index ca3cecde8f..ed15893239 100644 --- a/tests/regressiontests/templates/views.py +++ b/tests/regressiontests/templates/views.py @@ -1,4 +1,7 @@ # Fake views for testing url reverse lookup +from django.http import HttpResponse +from django.template.response import TemplateResponse + def index(request): pass @@ -11,3 +14,9 @@ def client_action(request, id, action): def client2(request, tag): pass + +def template_response_view(request): + return TemplateResponse(request, 'response.html', {}) + +def snark(request): + return HttpResponse('Found him!') |
