From d94de802d34c858805a01d3c699799aebc247ec3 Mon Sep 17 00:00:00 2001 From: mlavin Date: Sun, 20 Apr 2014 08:58:29 -0400 Subject: [1.7.x] Fixed #22477 -- Removed contrib middleware from the global settings defaults. Also added a compatibility check for changed middleware defaults. --- tests/check_framework/tests.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'tests/check_framework/tests.py') diff --git a/tests/check_framework/tests.py b/tests/check_framework/tests.py index 4c861ed509..5325e718bf 100644 --- a/tests/check_framework/tests.py +++ b/tests/check_framework/tests.py @@ -10,6 +10,7 @@ from django.core import checks from django.core.checks import Error, Warning from django.core.checks.registry import CheckRegistry from django.core.checks.compatibility.django_1_6_0 import check_1_6_compatibility +from django.core.checks.compatibility.django_1_7_0 import check_1_7_compatibility from django.core.management.base import CommandError from django.core.management import call_command from django.db.models.fields import NOT_PROVIDED @@ -148,6 +149,40 @@ class Django_1_6_0_CompatibilityChecks(TestCase): boolean_field.default = old_default +class Django_1_7_0_CompatibilityChecks(TestCase): + + @override_settings(MIDDLEWARE_CLASSES=('django.contrib.sessions.middleware.SessionMiddleware',)) + def test_middleware_classes_overridden(self): + errors = check_1_7_compatibility() + self.assertEqual(errors, []) + + def test_middleware_classes_not_set_explicitly(self): + # If MIDDLEWARE_CLASSES was set explicitly, temporarily pretend it wasn't + middleware_classes_overridden = False + if 'MIDDLEWARE_CLASSES' in settings._wrapped._explicit_settings: + middleware_classes_overridden = True + settings._wrapped._explicit_settings.remove('MIDDLEWARE_CLASSES') + try: + errors = check_1_7_compatibility() + expected = [ + checks.Warning( + "MIDDLEWARE_CLASSES is not set.", + hint=("Django 1.7 changed the global defaults for the MIDDLEWARE_CLASSES." + "django.contrib.sessions.middleware.SessionMiddleware, " + "django.contrib.auth.middleware.AuthenticationMiddleware, and " + "django.contrib.messages.middleware.MessageMiddleware were removed from the defaults." + "If your project needs these middleware then you should configure this setting."), + obj=None, + id='1_7.W001', + ) + ] + self.assertEqual(errors, expected) + finally: + # Restore settings value + if middleware_classes_overridden: + settings._wrapped._explicit_settings.add('MIDDLEWARE_CLASSES') + + def simple_system_check(**kwargs): simple_system_check.kwargs = kwargs return [] -- cgit v1.3