Example #1
0
def test_google_user_retrieval(no_user_google_token, valid_payload):
    # pylint: disable=no-member

    # Create user
    u = user_for_google_id_token(no_user_google_token)
    assert u is not None
    assert u.id is not None

    # Retrieve user. It should be the same one.
    u2 = user_for_google_id_token(no_user_google_token)
    assert u2 is not None
    assert u2.id == u.id

    # Check identity is added only once
    assert UserIdentity.query.filter(
        UserIdentity.provider == 'google',
        UserIdentity.provider_identity == valid_payload['sub']
    ).count() == 1
Example #2
0
def signin_with_google_token():
    redir_url = request.args.get('target', url_for('ui.index'))

    token = request.args.get('token', None)
    if token is None:
        raise BadRequest('no token given')

    # Get auth token and add to session
    user = user_for_google_id_token(request.args['token'])
    session[AUTH_TOKEN_SESSION_KEY] = user.token

    return redirect(redir_url)
Example #3
0
def test_google_user_creation(no_user_google_token, valid_payload):
    # pylint: disable=no-member

    # Check creation of user
    u = user_for_google_id_token(no_user_google_token)
    assert u is not None
    assert u.name == valid_payload['email']
    assert u.id is not None # => it is in the database

    # Check identity is added
    assert UserIdentity.query.filter(
        UserIdentity.provider == 'google',
        UserIdentity.provider_identity == valid_payload['sub']
    ).count() == 1
Example #4
0
def test_google_user_multiple_association(db, valid_payload, no_user_google_token, user):
    """Repeatedly associating an id only affects one row."""
    # pylint: disable=no-member

    for _ in range(10):
        associate_user_with_google_id(user, no_user_google_token)
        db.session.commit()

    u = user_for_google_id_token(no_user_google_token)
    assert u.id == user.id

    # Check identity is added only once
    assert UserIdentity.query.filter(
        UserIdentity.provider == 'google',
        UserIdentity.provider_identity == valid_payload['sub']
    ).count() == 1
Example #5
0
def exchange_google_token():
    """Exchange an google id token for a user token."""
    user = user_for_google_id_token(request.args['token'])
    return jsonify(dict(token=user.token.decode('ascii')))
Example #6
0
def test_google_user_fixture(google_id_token, user):
    """Test that retrieving the user associated with the google_token fixture
    gives the correct user."""
    u = user_for_google_id_token(google_id_token)
    assert u.id == user.id
Example #7
0
def test_google_user_association(no_user_google_token, user):
    associate_user_with_google_id(user, no_user_google_token)
    u = user_for_google_id_token(no_user_google_token)
    assert u.id == user.id
Example #8
0
def test_google_user_needs_email(app, valid_payload):
    del valid_payload['email']
    t = _encode_valid_token(app, valid_payload)
    with pytest.raises(BadRequest):
        user_for_google_id_token(t)
Example #9
0
def test_google_user_needs_valid_token(app, valid_payload):
    # pylint: disable=unused-argument
    t = _encode_invalid_token(valid_payload)
    with pytest.raises(BadRequest):
        user_for_google_id_token(t)