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
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)
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
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
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')))
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
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
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)
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)