summaryrefslogtreecommitdiff
path: root/tests/admin_checks
diff options
context:
space:
mode:
Diffstat (limited to 'tests/admin_checks')
-rw-r--r--tests/admin_checks/tests.py87
1 files changed, 81 insertions, 6 deletions
diff --git a/tests/admin_checks/tests.py b/tests/admin_checks/tests.py
index a968cd5ba3..d5661a137d 100644
--- a/tests/admin_checks/tests.py
+++ b/tests/admin_checks/tests.py
@@ -43,6 +43,8 @@ class MyAdmin(admin.ModelAdmin):
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
'admin_checks',
],
)
@@ -58,20 +60,42 @@ class SystemChecksTestCase(SimpleTestCase):
admin.site.unregister(Song)
@override_settings(INSTALLED_APPS=['django.contrib.admin'])
- def test_contenttypes_dependency(self):
+ def test_apps_dependencies(self):
errors = admin.checks.check_dependencies()
expected = [
checks.Error(
"'django.contrib.contenttypes' must be in "
"INSTALLED_APPS in order to use the admin application.",
id="admin.E401",
+ ),
+ checks.Error(
+ "'django.contrib.auth' must be in INSTALLED_APPS in order "
+ "to use the admin application.",
+ id='admin.E405',
+ ),
+ checks.Error(
+ "'django.contrib.messages' must be in INSTALLED_APPS in order "
+ "to use the admin application.",
+ id='admin.E406',
+ ),
+ checks.Error(
+ "'django.contrib.sessions' must be in INSTALLED_APPS in order "
+ "to use the admin application.",
+ id='admin.E407',
)
]
self.assertEqual(errors, expected)
@override_settings(TEMPLATES=[])
def test_no_template_engines(self):
- self.assertEqual(admin.checks.check_dependencies(), [])
+ self.assertEqual(admin.checks.check_dependencies(), [
+ checks.Error(
+ "A 'django.template.backends.django.DjangoTemplates' "
+ "instance must be configured in TEMPLATES in order to use "
+ "the admin application.",
+ id='admin.E403',
+ )
+ ])
@override_settings(
TEMPLATES=[{
@@ -83,13 +107,64 @@ class SystemChecksTestCase(SimpleTestCase):
},
}],
)
- def test_auth_contextprocessor_dependency(self):
+ def test_context_processor_dependencies(self):
+ expected = [
+ 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',
+ ),
+ checks.Error(
+ "'django.contrib.messages.context_processors.messages' must "
+ "be enabled in DjangoTemplates (TEMPLATES) in order to use "
+ "the admin application.",
+ id='admin.E404',
+ )
+ ]
+ self.assertEqual(admin.checks.check_dependencies(), expected)
+ # The first error doesn't happen if
+ # 'django.contrib.auth.backends.ModelBackend' isn't in
+ # AUTHENTICATION_BACKENDS.
+ with self.settings(AUTHENTICATION_BACKENDS=[]):
+ self.assertEqual(admin.checks.check_dependencies(), expected[1:])
+
+ @override_settings(
+ TEMPLATES=[
+ {
+ 'BACKEND': 'django.template.backends.jinja2.Jinja2',
+ 'DIRS': [],
+ 'APP_DIRS': True,
+ },
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [],
+ 'APP_DIRS': True,
+ 'OPTIONS': {
+ 'context_processors': [
+ 'django.contrib.auth.context_processors.auth',
+ 'django.contrib.messages.context_processors.messages',
+ ],
+ },
+ },
+ ],
+ )
+ def test_several_templates_backends(self):
+ self.assertEqual(admin.checks.check_dependencies(), [])
+
+ @override_settings(MIDDLEWARE=[])
+ def test_middleware_dependencies(self):
errors = admin.checks.check_dependencies()
expected = [
checks.Error(
- "'django.contrib.auth.context_processors.auth' must be in "
- "TEMPLATES in order to use the admin application.",
- id="admin.E402",
+ "'django.contrib.auth.middleware.AuthenticationMiddleware' "
+ "must be in MIDDLEWARE in order to use the admin application.",
+ id='admin.E408',
+ ),
+ checks.Error(
+ "'django.contrib.messages.middleware.MessageMiddleware' "
+ "must be in MIDDLEWARE in order to use the admin application.",
+ id='admin.E409',
)
]
self.assertEqual(errors, expected)