diff options
| author | Jay Cox <jaycox@linear3d.com> | 2015-04-27 22:23:42 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-07-31 12:04:06 -0400 |
| commit | 434d309ef6dbecbfd2b322d3a1da78aa5cb05fa8 (patch) | |
| tree | 70fa5bf07614e81ca9d32ae1d105ce3b21cf1cdc /tests | |
| parent | 1e2362ca0f2805e91204a7b005e5aed293b40c9e (diff) | |
Fixed #24720 -- Avoided resolving URLs that don't end in a slash twice in CommonMiddleware.
This speeds up affected requests by about 5%.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/middleware/tests.py | 60 | ||||
| -rw-r--r-- | tests/test_client_regress/views.py | 2 |
2 files changed, 44 insertions, 18 deletions
diff --git a/tests/middleware/tests.py b/tests/middleware/tests.py index aa84a69ca1..21f45419c0 100644 --- a/tests/middleware/tests.py +++ b/tests/middleware/tests.py @@ -11,8 +11,8 @@ from django.conf import settings from django.core import mail from django.core.exceptions import PermissionDenied from django.http import ( - FileResponse, HttpRequest, HttpResponse, HttpResponsePermanentRedirect, - HttpResponseRedirect, StreamingHttpResponse, + FileResponse, HttpRequest, HttpResponse, HttpResponseNotFound, + HttpResponsePermanentRedirect, HttpResponseRedirect, StreamingHttpResponse, ) from django.middleware.clickjacking import XFrameOptionsMiddleware from django.middleware.common import ( @@ -39,6 +39,8 @@ class CommonMiddlewareTest(SimpleTestCase): """ request = self.rf.get('/slash/') self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponseNotFound() + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_slashless_resource(self): @@ -47,6 +49,8 @@ class CommonMiddlewareTest(SimpleTestCase): """ request = self.rf.get('/noslash') self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponse("Here's the text of the Web page.") + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_slashless_unknown(self): @@ -54,7 +58,8 @@ class CommonMiddlewareTest(SimpleTestCase): APPEND_SLASH should not redirect to unknown resources. """ request = self.rf.get('/unknown') - self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponseNotFound() + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_redirect(self): @@ -62,7 +67,8 @@ class CommonMiddlewareTest(SimpleTestCase): APPEND_SLASH should redirect slashless URLs to a valid pattern. """ request = self.rf.get('/slash') - r = CommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, '/slash/') @@ -72,7 +78,8 @@ class CommonMiddlewareTest(SimpleTestCase): APPEND_SLASH should preserve querystrings when redirecting. """ request = self.rf.get('/slash?test=1') - r = CommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) self.assertEqual(r.url, '/slash/?test=1') @override_settings(APPEND_SLASH=True, DEBUG=True) @@ -85,16 +92,17 @@ class CommonMiddlewareTest(SimpleTestCase): msg = "maintaining %s data. Change your form to point to testserver/slash/" request = self.rf.get('/slash') request.method = 'POST' + response = HttpResponseNotFound() with six.assertRaisesRegex(self, RuntimeError, msg % request.method): - CommonMiddleware().process_request(request) + CommonMiddleware().process_response(request, response) request = self.rf.get('/slash') request.method = 'PUT' with six.assertRaisesRegex(self, RuntimeError, msg % request.method): - CommonMiddleware().process_request(request) + CommonMiddleware().process_response(request, response) request = self.rf.get('/slash') request.method = 'PATCH' with six.assertRaisesRegex(self, RuntimeError, msg % request.method): - CommonMiddleware().process_request(request) + CommonMiddleware().process_response(request, response) @override_settings(APPEND_SLASH=False) def test_append_slash_disabled(self): @@ -102,7 +110,8 @@ class CommonMiddlewareTest(SimpleTestCase): Disabling append slash functionality should leave slashless URLs alone. """ request = self.rf.get('/slash') - self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponseNotFound() + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_quoted(self): @@ -110,7 +119,8 @@ class CommonMiddlewareTest(SimpleTestCase): URLs which require quoting should be redirected to their slash version ok. """ request = self.rf.get(quote('/needsquoting#')) - r = CommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) self.assertEqual(r.status_code, 301) self.assertEqual( r.url, @@ -152,6 +162,8 @@ class CommonMiddlewareTest(SimpleTestCase): request = self.rf.get('/customurlconf/slash/') request.urlconf = 'middleware.extra_urls' self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponseNotFound() + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_slashless_resource_custom_urlconf(self): @@ -161,6 +173,8 @@ class CommonMiddlewareTest(SimpleTestCase): request = self.rf.get('/customurlconf/noslash') request.urlconf = 'middleware.extra_urls' self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponse("Here's the text of the Web page.") + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_slashless_unknown_custom_urlconf(self): @@ -170,6 +184,8 @@ class CommonMiddlewareTest(SimpleTestCase): request = self.rf.get('/customurlconf/unknown') request.urlconf = 'middleware.extra_urls' self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponseNotFound() + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_redirect_custom_urlconf(self): @@ -178,7 +194,8 @@ class CommonMiddlewareTest(SimpleTestCase): """ request = self.rf.get('/customurlconf/slash') request.urlconf = 'middleware.extra_urls' - r = CommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) self.assertIsNotNone(r, "CommonMiddlware failed to return APPEND_SLASH redirect using request.urlconf") self.assertEqual(r.status_code, 301) @@ -194,8 +211,9 @@ class CommonMiddlewareTest(SimpleTestCase): request = self.rf.get('/customurlconf/slash') request.urlconf = 'middleware.extra_urls' request.method = 'POST' + response = HttpResponseNotFound() with six.assertRaisesRegex(self, RuntimeError, 'end in a slash'): - CommonMiddleware().process_request(request) + CommonMiddleware().process_response(request, response) @override_settings(APPEND_SLASH=False) def test_append_slash_disabled_custom_urlconf(self): @@ -205,6 +223,8 @@ class CommonMiddlewareTest(SimpleTestCase): request = self.rf.get('/customurlconf/slash') request.urlconf = 'middleware.extra_urls' self.assertEqual(CommonMiddleware().process_request(request), None) + response = HttpResponseNotFound() + self.assertEqual(CommonMiddleware().process_response(request, response), response) @override_settings(APPEND_SLASH=True) def test_append_slash_quoted_custom_urlconf(self): @@ -213,7 +233,8 @@ class CommonMiddlewareTest(SimpleTestCase): """ request = self.rf.get(quote('/customurlconf/needsquoting#')) request.urlconf = 'middleware.extra_urls' - r = CommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) self.assertIsNotNone(r, "CommonMiddlware failed to return APPEND_SLASH redirect using request.urlconf") self.assertEqual(r.status_code, 301) @@ -262,12 +283,16 @@ class CommonMiddlewareTest(SimpleTestCase): """Regression test for #15152""" request = self.rf.get('/slash') request.META['QUERY_STRING'] = force_str('drink=café') - response = CommonMiddleware().process_request(request) - self.assertEqual(response.status_code, 301) + r = CommonMiddleware().process_request(request) + self.assertIsNone(r) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) + self.assertEqual(r.status_code, 301) def test_response_redirect_class(self): request = self.rf.get('/slash') - r = CommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = CommonMiddleware().process_response(request, response) self.assertEqual(r.status_code, 301) self.assertEqual(r.url, '/slash/') self.assertIsInstance(r, HttpResponsePermanentRedirect) @@ -277,7 +302,8 @@ class CommonMiddlewareTest(SimpleTestCase): response_redirect_class = HttpResponseRedirect request = self.rf.get('/slash') - r = MyCommonMiddleware().process_request(request) + response = HttpResponseNotFound() + r = MyCommonMiddleware().process_response(request, response) self.assertEqual(r.status_code, 302) self.assertEqual(r.url, '/slash/') self.assertIsInstance(r, HttpResponseRedirect) diff --git a/tests/test_client_regress/views.py b/tests/test_client_regress/views.py index d21448cba1..6ba419833a 100644 --- a/tests/test_client_regress/views.py +++ b/tests/test_client_regress/views.py @@ -66,7 +66,7 @@ def nested_view(request): """ setup_test_environment() c = Client() - c.get("/no_template_view") + c.get("/no_template_view/") return render_to_response('base.html', {'nested': 'yes'}) |
