예제 #1
0
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)
예제 #3
0
 def test_returns_None_if_no_such_token(self):
     result = PasswordlessAuthenticationBackend.authenticate(
         'no-such-token')
     self.assertIsNone(result)
예제 #4
0
def login(request):
    user = PasswordlessAuthenticationBackend.authenticate(
        uid=request.GET.get('token'))
    if user:
        auth.login(request, user)
    return redirect('/')