[1.2.X] Fixed #13190 -- Improved error handling for the case where no authentication backends are defined. Thanks to Joel3000 for the report, and Łukasz Rekucki for the final patch.
Backport of r14793 from trunk. git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@14799 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
c7d68418d2
commit
81a85a0c2b
|
@ -39,6 +39,8 @@ def get_backends():
|
||||||
backends = []
|
backends = []
|
||||||
for backend_path in settings.AUTHENTICATION_BACKENDS:
|
for backend_path in settings.AUTHENTICATION_BACKENDS:
|
||||||
backends.append(load_backend(backend_path))
|
backends.append(load_backend(backend_path))
|
||||||
|
if not backends:
|
||||||
|
raise ImproperlyConfigured('No authentication backends have been defined. Does AUTHENTICATION_BACKENDS contain anything?')
|
||||||
return backends
|
return backends
|
||||||
|
|
||||||
def authenticate(**credentials):
|
def authenticate(**credentials):
|
||||||
|
|
|
@ -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.basic import BasicTestCase
|
||||||
from django.contrib.auth.tests.decorators import LoginRequiredTestCase
|
from django.contrib.auth.tests.decorators import LoginRequiredTestCase
|
||||||
from django.contrib.auth.tests.forms import UserCreationFormTest, AuthenticationFormTest, SetPasswordFormTest, PasswordChangeFormTest, UserChangeFormTest, PasswordResetFormTest
|
from django.contrib.auth.tests.forms import UserCreationFormTest, AuthenticationFormTest, SetPasswordFormTest, PasswordChangeFormTest, UserChangeFormTest, PasswordResetFormTest
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import User, Group, Permission, AnonymousUser
|
from django.contrib.auth.models import User, Group, Permission, AnonymousUser
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
|
|
||||||
|
@ -245,3 +246,18 @@ class NoAnonymousUserBackendTest(TestCase):
|
||||||
|
|
||||||
def test_get_all_permissions(self):
|
def test_get_all_permissions(self):
|
||||||
self.assertEqual(self.user1.get_all_permissions(TestObj()), set())
|
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(),))
|
||||||
|
|
Loading…
Reference in New Issue