Ejemplo n.º 1
0
 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, '*****@*****.**')
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
    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')