def setUp(self): patcher = patch('swingers.sauth.backends.LDAPBackend') self.ldap = patcher.start() self.backend = EmailBackend() self.addCleanup(patcher.stop)
class EmailBackendTests(TestCase): """ Test the authentication backends included in swingers. """ fixtures = ['test-users'] def setUp(self): patcher = patch('swingers.sauth.backends.LDAPBackend') self.ldap = patcher.start() self.backend = EmailBackend() self.addCleanup(patcher.stop) def test_email_backend_no_password(self): """ Test that attempting to authenticate with no password returns None. """ instance = self.ldap.return_value user = self.backend.authenticate(username='******') self.assertEqual(user, None) self.assertEqual(instance.authenticate.mock_calls, []) def test_email_backend_user_exists(self): """ Test authenticating with a user that exists in the database. """ instance = self.ldap.return_value user = self.backend.authenticate(username='******', password='******') self.assertEqual(user.username, 'admin') self.assertEqual(instance.authenticate.mock_calls, []) def test_email_backend_password_incorrect(self): """ Test that using a password that is incorrect in the database falls back to ldap authenticate to check against the information there. """ instance = self.ldap.return_value instance.authenticate.return_value = User.objects.get(pk=1) user = self.backend.authenticate(username='******', password='******') self.assertEqual(user.username, 'admin') instance.authenticate.assert_called_once_with(username='******', password='******') def test_email_backend_nonexistant_user(self): """ Test authenticating as a user that doesn't exist in database, check that it creates a user from ldap and returns it. """ instance = self.ldap.return_value def create_user(*args, **kwargs): return User.objects.create(username='******', password='******', email='*****@*****.**', first_name='test', last_name='test') instance.authenticate.side_effect = create_user user = self.backend.authenticate(username='******', password='******') self.assertEqual(user.username, 'test-create') instance.authenticate.assert_called_once_with(username='******', password='******') def create_user(*args, **kwargs): return User.objects.create(username='******', password='******', email='*****@*****.**', first_name='test', last_name='test') instance.authenticate.side_effect = create_user user = self.backend.authenticate(username='******', password='******') self.assertEqual(user.username, 'test-create') self.assertEqual( User.objects.filter(username='******').count(), 1) def test_email_backend_user_no_email(self): """ Test authenticating as a user that doesn't exist in database, check that it creates a user from ldap and returns it. """ instance = self.ldap.return_value def create_user(*args, **kwargs): return User.objects.create(username='******', password='******', first_name='test', last_name='test') instance.authenticate.side_effect = create_user user = self.backend.authenticate(username='******', password='******') self.assertEqual(user.username, 'test-no-email') instance.authenticate.assert_called_once_with(username='******', password='******') def test_email_backend_nonexistant_user_ldap(self): """ Test authenticating as a user that doesn't exist in the database or in LDAP. """ instance = self.ldap.return_value instance.authenticate.return_value = None user = self.backend.authenticate(username='******', password='******') self.assertEqual(user, None) def test_email_backend_get_user(self): user = self.backend.get_user(1) self.assertEqual(user, User.objects.get(pk=1)) self.assertIsNone(self.backend.get_user(99)) def test_email_backend_ldap_auth_exception(self): """ Test LDAP authenticate exception handling. """ instance = self.ldap.return_value instance.authenticate.side_effect = Exception() user = self.backend.authenticate(username='******', password='******') self.assertIsNone(user)