class AuthenticateTest(TestCase): def setUp(self): self.backend = PasswordlessAuthenticationBackend() def test_returns_None_if_no_such_token(self): self.assertIsNone(self.backend.authenticate(uid='abcdoesntexist123')) def test_existing_user__returns_user_matching_email_associated_with_token_uid( self): email = '*****@*****.**' token = Token.objects.create(email=email) existing_user = User.objects.create(email=email) authenticated_user = self.backend.authenticate(uid=token.uid) self.assertEqual(authenticated_user, existing_user) def test_no_existing_user__creates_new_user_with_email_associated_with_token_uid( self): email = '*****@*****.**' token = Token.objects.create(email=email) self.assertEqual(User.objects.count(), 0) newly_created_and_authenticated_user = self.backend.authenticate( uid=token.uid) self.assertEqual(User.objects.count(), 1) self.assertEqual(newly_created_and_authenticated_user, User.objects.first()) self.assertEqual(newly_created_and_authenticated_user.email, '*****@*****.**') def test_get_existing_user(self): desired_user = User.objects.create(email='*****@*****.**') User.objects.create(email='*****@*****.**') self.assertEqual(self.backend.get_user('*****@*****.**'), desired_user) def test_get_missing_user(self): self.assertIsNone(self.backend.get_user('*****@*****.**'))
class AuthenticateTest(TestCase): def setUp(self): self.backend = PasswordlessAuthenticationBackend() self.email = '*****@*****.**' self.another_email = "*****@*****.**" self.user = ListUser(email=self.email) self.user.username = '******' self.user.save() self.uid = "123456" self.token = Token.objects.create(email=self.email, uid=self.uid) self.another_uid = "123" self.token_without_user = Token.objects.create( email=self.another_email, uid=self.another_uid) def test_return_none_when_token_not_found(self): self.assertEqual(self.backend.authenticate('not exist'), None) def test_find_user_and_token(self): self.assertEqual(self.backend.authenticate(self.uid), self.user) def test_create_user_if_necessary_for_valid_token(self): found_user = self.backend.authenticate(self.another_uid) new_user = ListUser.objects.get(email=self.another_email) self.assertEqual(found_user, new_user)
def test_returns_None_if_no_such_token(self): result = PasswordlessAuthenticationBackend.authenticate( 'no-such-token') self.assertIsNone(result)
def login(request): user = PasswordlessAuthenticationBackend.authenticate( uid=request.GET.get('token')) if user: auth.login(request, user) return redirect('/')