Ejemplo n.º 1
0
Archivo: auth.py Proyecto: keho98/argos
def _process_user(provider, provider_id, token, secret, userdata):
    """
    Processes a user to either login or
    add a new authentication to an existing user.
    """
    # If there is already an authenticated user,
    # add this provider to that user.
    if current_user.is_authenticated:
        try:
            current_user.add_provider(provider, provider_id, token, secret, update=True)

        # Conflict - this added authentication already exists but is
        # associated with another user.
        except AuthExistsForUserException as e:
            return jsonify(status=409, message=e.message)

    # Otherwise...
    else:
        # Try to find an existing auth and user.
        auth = Auth.for_provider(provider, provider_id)

        # If one is found, update the auth.
        if auth:
            user = auth.user
            auth.update_token(token, secret)

        # Otherwise create a new user and auth.
        else:
            user = User(**userdata)
            auth = Auth(provider, provider_id, token, secret)
            auth.user = user
            db.session.add(user)
            db.session.add(auth)
        db.session.commit()
        login_user(user)
Ejemplo n.º 2
0
    def test_add_provider_conflict(self):
        auth = Auth(**self.authdata)
        user_a = User(**self.userdata)
        user_b = User(name='Hubble Bubbs')
        auth.user = user_a

        db.session.add(auth)
        db.session.commit()

        self.assertRaises(AuthExistsForUserException, user_b.add_provider, **self.authdata)
Ejemplo n.º 3
0
    def test_add_provider(self):
        user = User(**self.userdata)
        user.add_provider(**self.authdata)

        auth = Auth.for_provider(self.authdata['provider'], self.authdata['provider_id'])

        self.assertEqual(Auth.query.count(), 1)
        self.assertEqual(auth.user, user)
Ejemplo n.º 4
0
Archivo: auth.py Proyecto: keho98/argos
def _process_user(provider, provider_id, token, secret, userdata):
    """
    Processes a user to either login or
    add a new authentication to an existing user.
    """
    # If there is already an authenticated user,
    # add this provider to that user.
    if current_user.is_authenticated:
        try:
            current_user.add_provider(provider,
                                      provider_id,
                                      token,
                                      secret,
                                      update=True)

        # Conflict - this added authentication already exists but is
        # associated with another user.
        except AuthExistsForUserException as e:
            return jsonify(status=409, message=e.message)

    # Otherwise...
    else:
        # Try to find an existing auth and user.
        auth = Auth.for_provider(provider, provider_id)

        # If one is found, update the auth.
        if auth:
            user = auth.user
            auth.update_token(token, secret)

        # Otherwise create a new user and auth.
        else:
            user = User(**userdata)
            auth = Auth(provider, provider_id, token, secret)
            auth.user = user
            db.session.add(user)
            db.session.add(auth)
        db.session.commit()
        login_user(user)
Ejemplo n.º 5
0
    def test_auth_encrypts_decrypts_secret(self):
        secret = 'an_access_token_secret'
        a = Auth('12345', 'twooter', 'an_access_token', secret)
        self.assertNotEqual(a._access_token_secret, secret)
        self.assertEqual(a.access_token_secret, secret)
        self.db.session.add(a)
        self.db.session.commit()
        self.assertEqual(Auth.query.count(), 1)

        # Test that retrieval/decryption works as expected as well.
        a = None
        a = Auth.query.first()
        self.assertNotEqual(a._access_token_secret, secret)
        self.assertEqual(a.access_token_secret, secret)
Ejemplo n.º 6
0
    def test_merge_prefer_merger(self):
        user_a = User(**self.userdata)
        user_b = User(name='Hubble Bubbs')
        auth_a = Auth(**self.authdata)
        auth_b = Auth(self.authdata['provider'], '8ahf81', '98kn32kafo2')

        auth_a.user = user_a
        auth_b.user = user_b

        for obj in [user_a, user_b, auth_a, auth_b]:
            db.session.add(obj)
        db.session.commit()

        user_a.merge(user_b)

        self.assertEqual(len(user_a.auths.all()), 1)
        self.assertEqual(user_a.auths.first().provider_id, self.authdata['provider_id'])
Ejemplo n.º 7
0
    def test_merge(self):
        user_a = User(**self.userdata)
        user_b = User(name='Hubble Bubbs')
        auth_a = Auth(**self.authdata)
        auth_b = Auth('twitter', '8ahf81', '98kn32kafo2')

        auth_a.user = user_a
        auth_b.user = user_b

        for obj in [user_a, user_b, auth_a, auth_b]:
            db.session.add(obj)
        db.session.commit()

        self.assertEqual(User.query.count(), 2)

        user_a.merge(user_b)

        self.assertEqual(len(user_a.auths.all()), 2)
        self.assertEqual(User.query.count(), 1)
Ejemplo n.º 8
0
 def test_update_token_with_secret(self):
     secret = 'an_access_token_secret'
     a = Auth('12345', 'twooter', 'an_access_token', secret)
     a.update_token('new_token', 'new_secret')
     self.assertEqual(a.access_token, 'new_token')
     self.assertEqual(a.access_token_secret, 'new_secret')
Ejemplo n.º 9
0
 def test_update_token_simple(self):
     a = Auth('12345', 'twooter', 'an_access_token')
     a.update_token('new_token')
     self.assertEqual(a.access_token, 'new_token')
Ejemplo n.º 10
0
 def test_update_token_with_secret(self):
     secret = 'an_access_token_secret'
     a = Auth('12345', 'twooter', 'an_access_token', secret)
     a.update_token('new_token', 'new_secret')
     self.assertEqual(a.access_token, 'new_token')
     self.assertEqual(a.access_token_secret, 'new_secret')
Ejemplo n.º 11
0
 def test_update_token_missing_secret(self):
     secret = 'an_access_token_secret'
     a = Auth('12345', 'twooter', 'an_access_token', secret)
     self.assertRaises(Exception, a.update_token, 'new_token')
Ejemplo n.º 12
0
 def test_update_token_simple(self):
     a = Auth('12345', 'twooter', 'an_access_token')
     a.update_token('new_token')
     self.assertEqual(a.access_token, 'new_token')