diff options
author | Berker Peksag <berker.peksag@gmail.com> | 2014-11-07 21:57:04 +0200 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2014-11-27 07:55:07 -0500 |
commit | 093e6c68b9b5afdf1f059a2321affc999763e919 (patch) | |
tree | 69c763023d9fa3deeec23c579d5854f22e9e5ffc /tests/middleware_exceptions | |
parent | bd337184f1b4901abdfd07b0219d6b9b45d0de2f (diff) | |
download | django-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.py | 66 |
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) |