summaryrefslogtreecommitdiff
path: root/tests/middleware_exceptions
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2014-11-07 21:57:04 +0200
committerTim Graham <timograham@gmail.com>2014-11-27 07:55:07 -0500
commit093e6c68b9b5afdf1f059a2321affc999763e919 (patch)
tree69c763023d9fa3deeec23c579d5854f22e9e5ffc /tests/middleware_exceptions
parentbd337184f1b4901abdfd07b0219d6b9b45d0de2f (diff)
downloaddjango-093e6c68b9b5afdf1f059a2321affc999763e919.tar.gz
Fixed #14664 -- Logged a warning if MiddlewareNotUsed is raised in DEBUG mode.
Diffstat (limited to 'tests/middleware_exceptions')
-rw-r--r--tests/middleware_exceptions/tests.py66
1 files changed, 65 insertions, 1 deletions
diff --git a/tests/middleware_exceptions/tests.py b/tests/middleware_exceptions/tests.py
index 473e726d8b..8a2ddfa4a1 100644
--- a/tests/middleware_exceptions/tests.py
+++ b/tests/middleware_exceptions/tests.py
@@ -1,11 +1,13 @@
import sys
from django.conf import settings
+from django.core.exceptions import MiddlewareNotUsed
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, override_settings
+from django.test import RequestFactory, TestCase, override_settings
+from django.test.utils import patch_logger
class TestException(Exception):
@@ -832,3 +834,65 @@ class RootUrlconfTests(TestCase):
# the previously defined settings.
del settings.ROOT_URLCONF
self.assertRaises(AttributeError, self.client.get, "/middleware_exceptions/view/")
+
+
+class MyMiddleware(object):
+
+ def __init__(self):
+ raise MiddlewareNotUsed
+
+ def process_request(self, request):
+ pass
+
+
+class MyMiddlewareWithExceptionMessage(object):
+
+ def __init__(self):
+ raise MiddlewareNotUsed('spam eggs')
+
+ def process_request(self, request):
+ pass
+
+
+@override_settings(
+ DEBUG=True,
+ ROOT_URLCONF='middleware_exceptions.urls',
+)
+class MiddlewareNotUsedTests(TestCase):
+
+ rf = RequestFactory()
+
+ def test_raise_exception(self):
+ request = self.rf.get('middleware_exceptions/view/')
+ with self.assertRaises(MiddlewareNotUsed):
+ MyMiddleware().process_request(request)
+
+ @override_settings(MIDDLEWARE_CLASSES=(
+ 'middleware_exceptions.tests.MyMiddleware',
+ ))
+ def test_log(self):
+ with patch_logger('django.request', 'debug') as calls:
+ self.client.get('/middleware_exceptions/view/')
+ self.assertEqual(len(calls), 1)
+ self.assertEqual(
+ calls[0],
+ "MiddlewareNotUsed: 'middleware_exceptions.tests.MyMiddleware'"
+ )
+
+ @override_settings(MIDDLEWARE_CLASSES=(
+ 'middleware_exceptions.tests.MyMiddlewareWithExceptionMessage',
+ ))
+ def test_log_custom_message(self):
+ with patch_logger('django.request', 'debug') as calls:
+ self.client.get('/middleware_exceptions/view/')
+ self.assertEqual(len(calls), 1)
+ self.assertEqual(
+ calls[0],
+ "MiddlewareNotUsed('middleware_exceptions.tests.MyMiddlewareWithExceptionMessage'): spam eggs"
+ )
+
+ @override_settings(DEBUG=False)
+ def test_do_not_log_when_debug_is_false(self):
+ with patch_logger('django.request', 'debug') as calls:
+ self.client.get('/middleware_exceptions/view/')
+ self.assertEqual(len(calls), 0)