diff options
author | Herman S <hermansc@users.noreply.github.com> | 2019-03-05 22:22:09 +0100 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2019-03-14 20:09:57 -0400 |
commit | f976ab1b117574db78d884c94e549a6b8e4c9f9b (patch) | |
tree | 7e92e713389df34aaa3aba50cd78b38e2b8d7b63 /tests/admin_checks | |
parent | 258110d6cdea5050f8df0bbc9af3fcd9bd342d29 (diff) | |
download | django-f976ab1b117574db78d884c94e549a6b8e4c9f9b.tar.gz |
Fixed #30237 -- Made Authentication/SessionMiddleware and ModelBackend admin checks allow subclasses.
Diffstat (limited to 'tests/admin_checks')
-rw-r--r-- | tests/admin_checks/tests.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/admin_checks/tests.py b/tests/admin_checks/tests.py index df1cd6f96f..c7fe39b91e 100644 --- a/tests/admin_checks/tests.py +++ b/tests/admin_checks/tests.py @@ -1,7 +1,10 @@ from django import forms from django.contrib import admin from django.contrib.admin import AdminSite +from django.contrib.auth.backends import ModelBackend +from django.contrib.auth.middleware import AuthenticationMiddleware from django.contrib.contenttypes.admin import GenericStackedInline +from django.contrib.messages.middleware import MessageMiddleware from django.core import checks from django.test import SimpleTestCase, override_settings @@ -37,6 +40,18 @@ class MyAdmin(admin.ModelAdmin): return ['error!'] +class AuthenticationMiddlewareSubclass(AuthenticationMiddleware): + pass + + +class MessageMiddlewareSubclass(MessageMiddleware): + pass + + +class ModelBackendSubclass(ModelBackend): + pass + + @override_settings( SILENCED_SYSTEM_CHECKS=['fields.W342'], # ForeignKey(unique=True) INSTALLED_APPS=[ @@ -130,6 +145,27 @@ class SystemChecksTestCase(SimpleTestCase): self.assertEqual(admin.checks.check_dependencies(), expected[1:]) @override_settings( + AUTHENTICATION_BACKENDS=['admin_checks.tests.ModelBackendSubclass'], + TEMPLATES=[{ + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': ['django.contrib.messages.context_processors.messages'], + }, + }], + ) + def test_context_processor_dependencies_model_backend_subclass(self): + self.assertEqual(admin.checks.check_dependencies(), [ + checks.Error( + "'django.contrib.auth.context_processors.auth' must be " + "enabled in DjangoTemplates (TEMPLATES) if using the default " + "auth backend in order to use the admin application.", + id='admin.E402', + ), + ]) + + @override_settings( TEMPLATES=[ { 'BACKEND': 'django.template.backends.dummy.TemplateStrings', @@ -169,6 +205,21 @@ class SystemChecksTestCase(SimpleTestCase): ] self.assertEqual(errors, expected) + @override_settings(MIDDLEWARE=[ + 'admin_checks.tests.AuthenticationMiddlewareSubclass', + 'admin_checks.tests.MessageMiddlewareSubclass', + ]) + def test_middleware_subclasses(self): + self.assertEqual(admin.checks.check_dependencies(), []) + + @override_settings(MIDDLEWARE=[ + 'django.contrib.does.not.Exist', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + ]) + def test_admin_check_ignores_import_error_in_middleware(self): + self.assertEqual(admin.checks.check_dependencies(), []) + def test_custom_adminsite(self): class CustomAdminSite(admin.AdminSite): pass |