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)
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)
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)
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))
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)
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)
def test_returns_none_if_request_not_passed_in(self): auth = FacebookConnectBackend() self.assertEqual(None, auth.authenticate())