Пример #1
0
    def test_creates_new_fb_id_for_existing_user(self):
        random_id = random(10, 100)
        username = '******' % random_id

        user = mox.MockObject(User)
        user.is_authenticated().AndReturn(True)

        fb_id = mox.MockObject(FacebookID)
        fb_id.user = user

        req = mox.MockObject(HttpRequest)
        req.user = user
        facebook = mox.MockObject(Facebook)
        facebook.check_session(req).AndReturn(True)
        facebook.uid = random_id
        req.facebook = facebook

        fb_manager = mox.MockObject(FacebookIDManager)
        fb_manager.get_uid(random_id).AndRaise(FacebookID.DoesNotExist())
        fb_manager.model = FacebookID
        fb_manager.create(pk=random_id, user=user).AndReturn(fb_id)

        replay_all(user, req, facebook, fb_manager)

        auth = FacebookConnectBackend(manager=fb_manager)
        new_user = auth.authenticate(request=req)
        self.assertEqual(new_user, user)

        verify_all(user, req, facebook, fb_manager)
Пример #2
0
    def test_returns_none_if_no_user_is_found(self):
        user_id = random(10, 100)
        user_manager = mox.MockObject(UserManager)
        user_manager.model = User
        user_manager.get(pk=user_id).AndRaise(User.DoesNotExist)
        replay_all(user_manager)

        auth = FacebookConnectBackend(user_manager=user_manager)
        self.assertEqual(None, auth.get_user(user_id))
        verify_all(user_manager)
Пример #3
0
    def test_provides_expected_get_user_functionality(self):
        user_id = random(10, 100)
        user = mox.MockObject(User)
        user_manager = mox.MockObject(UserManager)
        user_manager.get(pk = user_id).AndReturn(user)
        replay_all(user, user_manager)

        auth = FacebookConnectBackend(user_manager=user_manager)
        self.assertEqual(user, auth.get_user(user_id))
        verify_all(user, user_manager)
Пример #4
0
    def test_returns_none_if_check_session_fails(self):
        req = mox.MockObject(HttpRequest)
        facebook = mox.MockObject(Facebook)
        facebook.check_session(req).AndReturn(False)
        req.facebook = facebook

        replay_all(facebook, req)

        auth = FacebookConnectBackend()
        self.assertEqual(None, auth.authenticate(request = req))

        verify_all(facebook, req)
Пример #5
0
    def test_can_handle_pyfacebook_error_on_none_expires(self):
        # setup partial mock on check_session()
        request = mox.MockObject(HttpRequest)
        request.method = "GET"
        request.GET = {}
        request.POST = {}
        facebook = Facebook('foo', 'bar', 'baz')
        request.facebook = facebook

        def mock_validate_signature(*args, **kwargs):
            ret = self.validate_signature_return()
            ret['expires'] = 'None'
            return ret
        facebook.validate_signature = mock_validate_signature

        replay_all(request)

        auth = FacebookConnectBackend()
        self.assertEqual(None, auth.authenticate(request=request))
Пример #6
0
    def test_handles_string_for_facebook_uid_for_creation(self):
        random_id = str(random(10, 100))
        username = '******' % random_id

        user = mox.MockObject(User)
        user.is_authenticated().AndReturn(False)
        user.username = username
        user.set_unusable_password()
        user.save()

        user_manager = mox.MockObject(UserManager)
        user_manager.create(
            username=username,
            first_name='Bob',
            last_name='Example'
        ).AndReturn(user)

        fb_id = mox.MockObject(FacebookID)
        fb_id.user = user

        fb_manager = mox.MockObject(FacebookIDManager)
        fb_manager.model = FacebookID
        fb_manager.get_uid(random_id).AndRaise(FacebookID.DoesNotExist())
        fb_manager.create(pk = random_id, user = user).AndReturn(fb_id)

        req = mox.MockObject(HttpRequest)
        req.user = user
        facebook = mox.MockObject(Facebook)
        facebook.check_session(req).AndReturn(True)
        facebook.uid = random_id
        facebook.users = mox.MockObject(StubUserProxy)
        facebook.users.getInfo([random_id], ['name']).AndReturn([{"name": "Bob Example"}])
        req.facebook = facebook

        replay_all(user, user_manager, req, facebook, facebook.users, fb_id, fb_manager)

        auth = FacebookConnectBackend(manager=fb_manager, user_manager=user_manager)
        new_user = auth.authenticate(request = req)
        self.assertTrue(isinstance(new_user, User))

        verify_all(user, user_manager, req, facebook, facebook.users, fb_id, fb_manager)
Пример #7
0
    def test_returns_user_if_found(self):
        random_id = random(10, 100)

        user = mox.MockObject(User)
        fb_id = mox.MockObject(FacebookID)
        fb_id.user = user
        fb_manager = mox.MockObject(FacebookIDManager)
        fb_manager.get_uid(random_id).AndReturn(fb_id)

        req = mox.MockObject(HttpRequest)
        req.user = user
        facebook = mox.MockObject(Facebook)
        facebook.check_session(req).AndReturn(True)
        facebook.uid = random_id
        req.facebook = facebook

        replay_all(req, facebook, user, fb_id, fb_manager)

        auth = FacebookConnectBackend(manager=fb_manager)
        self.assertEqual(user, auth.authenticate(request=req))

        verify_all(req, facebook, user, fb_id, fb_manager)
Пример #8
0
    def test_returned_user_has_backend_set_to_facebook_backend(self):
        random_id = random(10, 100)

        user = mox.MockObject(User)
        fb_id = mox.MockObject(FacebookID)
        fb_id.user = user
        fb_manager = mox.MockObject(FacebookIDManager)
        fb_manager.get_uid(random_id).AndReturn(fb_id)

        req = mox.MockObject(HttpRequest)
        req.user = user
        facebook = mox.MockObject(Facebook)
        facebook.check_session(req).AndReturn(True)
        facebook.uid = random_id
        req.facebook = facebook

        replay_all(req, facebook, user, fb_id, fb_manager)

        auth = FacebookConnectBackend(manager=fb_manager)
        auth.authenticate(request=req)
        self.assertEqual(FACEBOOK_CONNECT_BACKEND_STRING, req.user.backend)

        verify_all(req, facebook, user, fb_id, fb_manager)
Пример #9
0
 def test_returns_none_if_request_not_passed_in(self):
     auth = FacebookConnectBackend()
     self.assertEqual(None, auth.authenticate())