summaryrefslogtreecommitdiff
path: root/tests/middleware_exceptions
diff options
context:
space:
mode:
authorFlorian Apolloner <florian@apolloner.eu>2015-11-07 16:12:37 +0100
committerTim Graham <timograham@gmail.com>2016-05-17 07:22:22 -0400
commit9baf692a58de78dba13aa582098781675367c329 (patch)
tree1926555441d0c3b13185782dce193b839d616a4a /tests/middleware_exceptions
parent05c888ffb843ba3eff06cd07b3cef5bbb513a54f (diff)
downloaddjango-9baf692a58de78dba13aa582098781675367c329.tar.gz
Fixed #26601 -- Improved middleware per DEP 0005.
Thanks Tim Graham for polishing the patch, updating the tests, and writing documentation. Thanks Carl Meyer for shepherding the DEP.
Diffstat (limited to 'tests/middleware_exceptions')
-rw-r--r--tests/middleware_exceptions/middleware.py4
-rw-r--r--tests/middleware_exceptions/tests.py39
2 files changed, 27 insertions, 16 deletions
diff --git a/tests/middleware_exceptions/middleware.py b/tests/middleware_exceptions/middleware.py
index 944dd8910d..6871d9556e 100644
--- a/tests/middleware_exceptions/middleware.py
+++ b/tests/middleware_exceptions/middleware.py
@@ -1,8 +1,10 @@
from __future__ import unicode_literals
from django.http import HttpResponse
+from django.utils.deprecation import MiddlewareMixin
-class ProcessExceptionMiddleware(object):
+class ProcessExceptionMiddleware(MiddlewareMixin):
+
def process_exception(self, request, exception):
return HttpResponse('Exception caught')
diff --git a/tests/middleware_exceptions/tests.py b/tests/middleware_exceptions/tests.py
index ef9d19fe21..13b33632f8 100644
--- a/tests/middleware_exceptions/tests.py
+++ b/tests/middleware_exceptions/tests.py
@@ -8,6 +8,7 @@ from django.template import engines
from django.template.response import TemplateResponse
from django.test import RequestFactory, SimpleTestCase, override_settings
from django.test.utils import patch_logger
+from django.utils.deprecation import MiddlewareMixin
class TestException(Exception):
@@ -15,13 +16,14 @@ class TestException(Exception):
# A middleware base class that tracks which methods have been called
-class TestMiddleware(object):
- def __init__(self):
+class TestMiddleware(MiddlewareMixin):
+ def __init__(self, get_response=None):
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
+ self.get_response = get_response
def process_request(self, request):
self.process_request_called = True
@@ -115,7 +117,11 @@ class NoResponseMiddleware(TestMiddleware):
super(NoResponseMiddleware, self).process_response(request, response)
-@override_settings(ROOT_URLCONF='middleware_exceptions.urls')
+@override_settings(
+ ROOT_URLCONF='middleware_exceptions.urls',
+ MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'],
+ MIDDLEWARE=None,
+)
class BaseMiddlewareExceptionTest(SimpleTestCase):
def setUp(self):
@@ -492,12 +498,10 @@ class MiddlewareTests(BaseMiddlewareExceptionTest):
# Check that the right middleware methods have been invoked
self.assert_middleware_usage(middleware, True, True, True, True, False)
- @override_settings(
- MIDDLEWARE_CLASSES=['middleware_exceptions.middleware.ProcessExceptionMiddleware'],
- )
+ @override_settings(MIDDLEWARE=['middleware_exceptions.middleware.ProcessExceptionMiddleware'])
def test_exception_in_render_passed_to_process_exception(self):
# Repopulate the list of middlewares since it's already been populated
- # by setUp() before the MIDDLEWARE_CLASSES setting got overridden
+ # by setUp() before the MIDDLEWARE setting got overridden.
self.client.handler.load_middleware()
response = self.client.get('/middleware_exceptions/exception_in_render/')
self.assertEqual(response.content, b'Exception caught')
@@ -868,7 +872,7 @@ class RootUrlconfTests(SimpleTestCase):
class MyMiddleware(object):
- def __init__(self):
+ def __init__(self, get_response=None):
raise MiddlewareNotUsed
def process_request(self, request):
@@ -877,7 +881,7 @@ class MyMiddleware(object):
class MyMiddlewareWithExceptionMessage(object):
- def __init__(self):
+ def __init__(self, get_response=None):
raise MiddlewareNotUsed('spam eggs')
def process_request(self, request):
@@ -887,6 +891,7 @@ class MyMiddlewareWithExceptionMessage(object):
@override_settings(
DEBUG=True,
ROOT_URLCONF='middleware_exceptions.urls',
+ MIDDLEWARE=['django.middleware.common.CommonMiddleware'],
)
class MiddlewareNotUsedTests(SimpleTestCase):
@@ -897,9 +902,7 @@ class MiddlewareNotUsedTests(SimpleTestCase):
with self.assertRaises(MiddlewareNotUsed):
MyMiddleware().process_request(request)
- @override_settings(MIDDLEWARE_CLASSES=[
- 'middleware_exceptions.tests.MyMiddleware',
- ])
+ @override_settings(MIDDLEWARE=['middleware_exceptions.tests.MyMiddleware'])
def test_log(self):
with patch_logger('django.request', 'debug') as calls:
self.client.get('/middleware_exceptions/view/')
@@ -909,9 +912,7 @@ class MiddlewareNotUsedTests(SimpleTestCase):
"MiddlewareNotUsed: 'middleware_exceptions.tests.MyMiddleware'"
)
- @override_settings(MIDDLEWARE_CLASSES=[
- 'middleware_exceptions.tests.MyMiddlewareWithExceptionMessage',
- ])
+ @override_settings(MIDDLEWARE=['middleware_exceptions.tests.MyMiddlewareWithExceptionMessage'])
def test_log_custom_message(self):
with patch_logger('django.request', 'debug') as calls:
self.client.get('/middleware_exceptions/view/')
@@ -926,3 +927,11 @@ class MiddlewareNotUsedTests(SimpleTestCase):
with patch_logger('django.request', 'debug') as calls:
self.client.get('/middleware_exceptions/view/')
self.assertEqual(len(calls), 0)
+
+
+@override_settings(
+ MIDDLEWARE_CLASSES=['django.middleware.common.CommonMiddleware'],
+ MIDDLEWARE=None,
+)
+class MiddlewareNotUsedMiddlewareClassesTests(MiddlewareNotUsedTests):
+ pass