def test_update_email_already_exists(self, message_mock): """Test updating to an email that is already used.""" UserFactory.create(email='*****@*****.**') user = UserFactory.create(email='*****@*****.**') claims = {'uid': 'my_unique_fxa_id', 'email': '*****@*****.**'} request_mock = Mock(spec=HttpRequest) request_mock.session = {} self.backend.claims = claims self.backend.request = request_mock self.backend.update_user(user, claims) message_mock.error.assert_called_with( request_mock, u'The email used with this Firefox Account is already linked in another profile.' ) eq_(User.objects.get(id=user.id).email, '*****@*****.**')
def test_username_already_exists(self, message_mock): """Test account creation when username already exists.""" UserFactory.create(username='******') claims = { 'email': '*****@*****.**', 'uid': 'my_unique_fxa_id', } request_mock = Mock(spec=HttpRequest) request_mock.session = {} self.backend.claims = claims self.backend.request = request_mock self.backend.create_user(claims) user = User.objects.get(profile__fxa_uid='my_unique_fxa_id') eq_(user.username, 'bar1') message_mock.success.assert_called()
def test_connecting_using_existing_fxa_account(self, message_mock): """Test connecting a SUMO account with an existing FxA in SUMO.""" UserFactory.create(profile__fxa_uid='my_unique_fxa_id') user = UserFactory.create() claims = { 'uid': 'my_unique_fxa_id', } request_mock = Mock(spec=HttpRequest) request_mock.session = {} self.backend.claims = claims self.backend.request = request_mock self.backend.update_user(user, claims) message_mock.error.assert_called_with( request_mock, u'This Firefox Account is already used in another profile.') ok_(not User.objects.get(id=user.id).profile.is_fxa_migrated) ok_(not User.objects.get(id=user.id).profile.fxa_uid)
def test_login_existing_user_by_email(self): """Test user filtering by email.""" user = UserFactory.create(email='*****@*****.**') claims = { 'email': '*****@*****.**', } request_mock = Mock(spec=HttpRequest) self.backend.claims = claims self.backend.request = request_mock self.backend.request.user = user self.backend.filter_users_by_claims(claims) eq_(User.objects.all()[0].id, user.id)
def test_login_existing_user_by_fxa_uid(self): """Test user filtering by FxA uid.""" user = UserFactory.create(profile__fxa_uid='my_unique_fxa_id') claims = { 'uid': 'my_unique_fxa_id', } request_mock = Mock(spec=HttpRequest) request_mock.session = {} self.backend.claims = claims self.backend.request = request_mock self.backend.request.user = user self.backend.filter_users_by_claims(claims) eq_(User.objects.all()[0].id, user.id)
def test_email_changed_in_FxA_match_by_uid(self, message_mock): """Test that the user email is updated successfully if it is changed in Firefox Accounts and we match users by uid. """ user = UserFactory.create(profile__fxa_uid='my_unique_fxa_id', email='*****@*****.**', profile__is_fxa_migrated=True) claims = {'uid': 'my_unique_fxa_id', 'email': '*****@*****.**'} request_mock = Mock(spec=HttpRequest) request_mock.session = {} self.backend.claims = claims self.backend.request = request_mock self.backend.update_user(user, claims) user = User.objects.get(id=user.id) eq_(user.email, '*****@*****.**') ok_(not message_mock.info.called)
def test_link_sumo_account_fxa(self, verify_token_mock, requests_mock, message_mock): """Test that an existing SUMO account is succesfully linked to Firefox Account.""" verify_token_mock.return_value = True user = UserFactory.create(email='*****@*****.**', profile__avatar='sumo_avatar', profile__name='Kenny Bania') user.profile.is_fxa_migrated = False user.profile.save() auth_request = RequestFactory().get('/foo', { 'code': 'foo', 'state': 'bar' }) auth_request.session = {} auth_request.user = user get_json_mock = Mock() get_json_mock.json.return_value = { 'email': '*****@*****.**', 'uid': 'my_unique_fxa_id', 'avatar': 'http://example.com/avatar', 'locale': 'en-US', 'displayName': 'FXA Display name', 'subscriptions': '[]' } requests_mock.get.return_value = get_json_mock post_json_mock = Mock() post_json_mock.json.return_value = { 'id_token': 'id_token', 'access_token': 'access_granted' } requests_mock.post.return_value = post_json_mock self.backend.authenticate(auth_request) ok_(user.profile.is_fxa_migrated) eq_(user.profile.fxa_uid, 'my_unique_fxa_id') eq_(user.email, '*****@*****.**') eq_(user.profile.avatar, 'sumo_avatar') eq_(user.profile.name, 'Kenny Bania') message_mock.info.assert_called_with(auth_request, 'fxa_notification_updated')