mirror of
https://github.com/jazzband/django-axes.git
synced 2026-03-16 22:30:23 +00:00
Add checks for django-axes configuration flags
This commit is contained in:
parent
2f319cfff7
commit
d5096a6464
2 changed files with 84 additions and 5 deletions
|
|
@ -5,21 +5,34 @@ from axes.conf import settings
|
|||
|
||||
class Messages:
|
||||
CACHE_INVALID = 'invalid cache configuration for settings.AXES_CACHE'
|
||||
MIDDLEWARE_INVALID = 'axes.middleware.AxesMiddleware not in settings.MIDDLEWARE'
|
||||
BACKEND_INVALID = 'axes.backends.AxesBackend not in settings.AUTHENTICATION_BACKENDS'
|
||||
|
||||
|
||||
class Hints:
|
||||
CACHE_INVALID = (
|
||||
'django-axes does not work properly with LocMemCache as the cache backend'
|
||||
' please add e.g. a DummyCache backend and configure it with settings.AXES_CACHE'
|
||||
'django-axes does not work properly with LocMemCache as the cache backend.'
|
||||
' Please check the django-axes documentation and reconfigure settings.AXES_CACHE.'
|
||||
)
|
||||
MIDDLEWARE_INVALID = (
|
||||
'django-axes does not work properly without axes.middleware.AxesMiddleware in settings.MIDDLEWARE.'
|
||||
' Please check the django-axes documentation and reconfigure settings.MIDDLEWARE.'
|
||||
)
|
||||
BACKEND_INVALID = (
|
||||
'django-axes does not work properly without axes.backends.AxesBackend in settings.AUTHENTICATION_BACKENDS.'
|
||||
' Please check the django-axes documentation and reconfigure settings.AUTHENTICATION_BACKENDS.'
|
||||
' Please note that the backend name was changed from AxesModelBackend to AxesBackend in django-axes version 5.'
|
||||
)
|
||||
|
||||
|
||||
class Codes:
|
||||
CACHE_INVALID = 'axes.E001'
|
||||
MIDDLEWARE_INVALID = 'axes.E002'
|
||||
BACKEND_INVALID = 'axes.E003'
|
||||
|
||||
|
||||
@register(Tags.caches)
|
||||
def axes_cache_backend_check(app_configs, **kwargs): # pylint: disable=unused-argument
|
||||
@register(Tags.compatibility, Tags.caches)
|
||||
def axes_cache_check(app_configs, **kwargs): # pylint: disable=unused-argument
|
||||
axes_handler = getattr(settings, 'AXES_HANDLER', '')
|
||||
|
||||
axes_cache_key = getattr(settings, 'AXES_CACHE', 'default')
|
||||
|
|
@ -44,3 +57,33 @@ def axes_cache_backend_check(app_configs, **kwargs): # pylint: disable=unused-a
|
|||
))
|
||||
|
||||
return errors
|
||||
|
||||
|
||||
@register(Tags.compatibility)
|
||||
def axes_middleware_check(app_configs, **kwargs): # pylint: disable=unused-argument
|
||||
errors = []
|
||||
|
||||
if 'axes.middleware.AxesMiddleware' not in settings.MIDDLEWARE:
|
||||
errors.append(Error(
|
||||
msg=Messages.MIDDLEWARE_INVALID,
|
||||
hint=Hints.MIDDLEWARE_INVALID,
|
||||
obj=settings.MIDDLEWARE,
|
||||
id=Codes.MIDDLEWARE_INVALID,
|
||||
))
|
||||
|
||||
return errors
|
||||
|
||||
|
||||
@register(Tags.compatibility)
|
||||
def axes_backend_check(app_configs, **kwargs): # pylint: disable=unused-argument
|
||||
errors = []
|
||||
|
||||
if 'axes.backends.AxesBackend' not in settings.AUTHENTICATION_BACKENDS:
|
||||
errors.append(Error(
|
||||
msg=Messages.BACKEND_INVALID,
|
||||
hint=Hints.BACKEND_INVALID,
|
||||
obj=settings.AUTHENTICATION_BACKENDS,
|
||||
id=Codes.BACKEND_INVALID,
|
||||
))
|
||||
|
||||
return errors
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from django.core.checks import run_checks, Error
|
||||
from django.test import override_settings
|
||||
from django.test import override_settings, modify_settings
|
||||
|
||||
from axes.checks import Messages, Hints, Codes
|
||||
from axes.conf import settings
|
||||
|
|
@ -37,3 +37,39 @@ class CacheCheckTestCase(AxesTestCase):
|
|||
def test_cache_check_does_not_produce_check_errors_with_database_handler(self):
|
||||
errors = run_checks()
|
||||
self.assertEqual([], errors)
|
||||
|
||||
|
||||
class MiddlewareCheckTestCase(AxesTestCase):
|
||||
@modify_settings(
|
||||
MIDDLEWARE={
|
||||
'remove': ['axes.middleware.AxesMiddleware']
|
||||
},
|
||||
)
|
||||
def test_cache_check_errors(self):
|
||||
errors = run_checks()
|
||||
error = Error(
|
||||
msg=Messages.MIDDLEWARE_INVALID,
|
||||
hint=Hints.MIDDLEWARE_INVALID,
|
||||
obj=settings.MIDDLEWARE,
|
||||
id=Codes.MIDDLEWARE_INVALID,
|
||||
)
|
||||
|
||||
self.assertEqual([error], errors)
|
||||
|
||||
|
||||
class BackendCheckTestCase(AxesTestCase):
|
||||
@modify_settings(
|
||||
AUTHENTICATION_BACKENDS={
|
||||
'remove': ['axes.backends.AxesBackend']
|
||||
},
|
||||
)
|
||||
def test_cache_check_errors(self):
|
||||
errors = run_checks()
|
||||
error = Error(
|
||||
msg=Messages.BACKEND_INVALID,
|
||||
hint=Hints.BACKEND_INVALID,
|
||||
obj=settings.AUTHENTICATION_BACKENDS,
|
||||
id=Codes.BACKEND_INVALID,
|
||||
)
|
||||
|
||||
self.assertEqual([error], errors)
|
||||
|
|
|
|||
Loading…
Reference in a new issue