mirror of
https://github.com/django/django.git
synced 2025-10-28 16:16:12 +00:00
Fixed #30237 -- Made Authentication/SessionMiddleware and ModelBackend admin checks allow subclasses.
This commit is contained in:
@@ -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=[
|
||||
@@ -129,6 +144,27 @@ class SystemChecksTestCase(SimpleTestCase):
|
||||
with self.settings(AUTHENTICATION_BACKENDS=[]):
|
||||
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=[
|
||||
{
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user