Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #13190 -- Improved error handling for the case where no authent…

…ication backends are defined. Thanks to Joel3000 for the report, and Łukasz Rekucki for the final patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@14793 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 34a386378ff4ac5081017691eb4eff83e30c8aa0 1 parent b5754e6
@freakboy3742 freakboy3742 authored
View
2  django/contrib/auth/__init__.py
@@ -37,6 +37,8 @@ def get_backends():
backends = []
for backend_path in settings.AUTHENTICATION_BACKENDS:
backends.append(load_backend(backend_path))
+ if not backends:
+ raise ImproperlyConfigured('No authentication backends have been defined. Does AUTHENTICATION_BACKENDS contain anything?')
return backends
def authenticate(**credentials):
View
2  django/contrib/auth/tests/__init__.py
@@ -1,4 +1,4 @@
-from django.contrib.auth.tests.auth_backends import BackendTest, RowlevelBackendTest, AnonymousUserBackendTest, NoAnonymousUserBackendTest
+from django.contrib.auth.tests.auth_backends import BackendTest, RowlevelBackendTest, AnonymousUserBackendTest, NoAnonymousUserBackendTest, NoBackendsTest
from django.contrib.auth.tests.basic import BasicTestCase
from django.contrib.auth.tests.decorators import LoginRequiredTestCase
from django.contrib.auth.tests.forms import UserCreationFormTest, AuthenticationFormTest, SetPasswordFormTest, PasswordChangeFormTest, UserChangeFormTest, PasswordResetFormTest
View
16 django/contrib/auth/tests/auth_backends.py
@@ -3,6 +3,7 @@
from django.conf import settings
from django.contrib.auth.models import User, Group, Permission, AnonymousUser
from django.contrib.contenttypes.models import ContentType
+from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase
@@ -251,3 +252,18 @@ def test_has_module_perms(self):
def test_get_all_permissions(self):
self.assertEqual(self.user1.get_all_permissions(TestObj()), set())
+
+class NoBackendsTest(TestCase):
+ """
+ Tests that an appropriate error is raised if no auth backends are provided.
+ """
+ def setUp(self):
+ self.old_AUTHENTICATION_BACKENDS = settings.AUTHENTICATION_BACKENDS
+ settings.AUTHENTICATION_BACKENDS = []
+ self.user = User.objects.create_user('test', 'test@example.com', 'test')
+
+ def tearDown(self):
+ settings.AUTHENTICATION_BACKENDS = self.old_AUTHENTICATION_BACKENDS
+
+ def test_raises_exception(self):
+ self.assertRaises(ImproperlyConfigured, self.user.has_perm, ('perm', TestObj(),))
Please sign in to comment.
Something went wrong with that request. Please try again.