def test_login_controller_authorized_no_token(flask_app): with flask_app.test_request_context("/auth/google/authorized"): assert current_user.is_authenticated is False returned = user_logged_in(bplogin, None) assert current_user.is_authenticated is False assert returned is not False assert re.search(r"error=token$", returned.headers["Location"]) is not None assert returned.status_code == 302
def test_logout_controller(flask_app, db_perm_session, test_vcr, auth_user, auth_blueprint): assert len(db_perm_session.query(User).all()) == 1 assert len(db_perm_session.query(OAuth).all()) == 1 with flask_app.test_request_context("/auth/logout"): user_logged_in(auth_blueprint, auth_user.oauth.token) assert current_user.is_authenticated is True with flask_app.test_client(user=auth_user) as client: assert current_user.is_authenticated is True with test_vcr.use_cassette("auth_google_token_revoke.yml"): response = client.get("/auth/logout") assert current_user.is_authenticated is False assert response.status_code == 302 assert len(db_perm_session.query(User).all()) == 1 assert len(db_perm_session.query(OAuth).all()) == 0
def test_login_controller_authorized_not_ok(flask_app, memory_blueprint): with responses.RequestsMock() as rsps: rsps.add(responses.GET, re.compile(".+google.+"), status=400) with flask_app.test_request_context("/auth/google/authorized"): assert current_user.is_authenticated is False returned = user_logged_in(memory_blueprint, {"access_token": "fake-token"}) assert current_user.is_authenticated is False assert returned is not False assert re.search(r"error=error$", returned.headers["Location"]) is not None assert returned.status_code == 302
def test_login_controller_login_user(flask_app, db_perm_session, auth_user, auth_blueprint): assert len(db_perm_session.query(User).all()) == 1 assert len(db_perm_session.query(OAuth).all()) == 1 with flask_app.test_request_context("/auth/google/authorized"): assert current_user.is_authenticated is False returned = user_logged_in(auth_blueprint, auth_user.oauth.token) logged_in_uid = session.get("user_id") assert current_user.is_authenticated is True assert returned is False assert len(db_perm_session.query(User).all()) == 1 assert len(db_perm_session.query(OAuth).all()) == 1 assert logged_in_uid == str(auth_user.id)
def test_login_controller_authorized(mocker, flask_app, memory_blueprint): mocker.patch.object(UserService, "get_create_oauth", return_value=MagicMock(autospec=True)) with responses.RequestsMock() as rsps: rsps.add(responses.GET, re.compile(".+google.+"), status=200, json={"id": "fake-id"}) with flask_app.test_request_context("/auth/google/authorized"): returned = user_logged_in(memory_blueprint, {"access_token": "fake-token"}) assert returned is False
def test_login_controller_authorized_error(mocker, flask_app, memory_blueprint): mocker.patch.object(UserService, "get_create_oauth", side_effect=DatabaseError("statement", "params", "orig")) with responses.RequestsMock() as rsps: rsps.add(responses.GET, re.compile(".+google.+"), status=200) with flask_app.test_request_context("/auth/google/authorized"): assert current_user.is_authenticated is False returned = user_logged_in(memory_blueprint, {"access_token": "fake-token"}) assert current_user.is_authenticated is False assert returned is not False assert re.search(r"error=error$", returned.headers["Location"]) is not None assert returned.status_code == 302