drops group info from default endpoint

This commit is contained in:
msramalho
2025-02-13 00:35:09 +00:00
parent 4b3d47803a
commit dcb8ee47d8
3 changed files with 5 additions and 40 deletions

View File

@@ -13,32 +13,6 @@ def test_endpoint_home(client_with_auth):
assert "breakingChanges" in j assert "breakingChanges" in j
assert "groups" not in j assert "groups" not in j
@patch("app.web.endpoints.default.bearer_security", new_callable=AsyncMock)
@patch("app.web.endpoints.default.get_user_auth", new_callable=AsyncMock, return_value="test@example.com")
@patch("app.web.endpoints.default.crud.get_user_groups", return_value=["group1", "group2"])
def test_endpoint_home_with_groups(m1, m2, m3, client_with_auth):
r = client_with_auth.get("/")
assert r.status_code == 200
j = r.json()
assert "version" in j and j["version"] == VERSION
assert "breakingChanges" in j
assert "groups" in j
assert j["groups"] == ["group1", "group2"]
@patch("app.web.endpoints.default.bearer_security", new_callable=AsyncMock)
@patch("app.web.endpoints.default.get_user_auth", new_callable=AsyncMock, return_value="test@example.com")
@patch("app.web.endpoints.default.crud.get_user_groups", side_effect=Exception('mocked error'))
def test_endpoint_home_with_groups_exception(m1, m2, m3, client_with_auth): # mocks call that triggers an internal error
r = client_with_auth.get("/")
assert r.status_code == 200
j = r.json()
assert "version" in j and j["version"] == VERSION
assert "breakingChanges" in j
assert "groups" not in j
def test_endpoint_health(client_with_auth): def test_endpoint_health(client_with_auth):
r = client_with_auth.get("/health") r = client_with_auth.get("/health")
assert r.status_code == 200 assert r.status_code == 200

View File

@@ -17,7 +17,7 @@ def test_alembic(db_session):
alembic.config.main(argv=['--raiseerr', 'upgrade', 'head']) alembic.config.main(argv=['--raiseerr', 'upgrade', 'head'])
alembic.config.main(argv=['--raiseerr', 'downgrade', 'base']) alembic.config.main(argv=['--raiseerr', 'downgrade', 'base'])
@patch("app.web.endpoints.default.crud.soft_delete_task", side_effect=Exception('mocked error')) @patch("app.web.endpoints.url.crud.soft_delete_task", side_effect=Exception('mocked error'))
def test_logging_middleware(m1, client_with_auth): def test_logging_middleware(m1, client_with_auth):
from app.web.utils.metrics import EXCEPTION_COUNTER from app.web.utils.metrics import EXCEPTION_COUNTER
assert len(EXCEPTION_COUNTER.collect()[0].samples) == 0 assert len(EXCEPTION_COUNTER.collect()[0].samples) == 0

View File

@@ -1,29 +1,20 @@
from typing import Dict from typing import Dict
from fastapi import APIRouter, Depends, Request, HTTPException from fastapi import APIRouter, Depends, HTTPException
from fastapi.responses import FileResponse, JSONResponse from fastapi.responses import FileResponse, JSONResponse
from app.web.config import VERSION, BREAKING_CHANGES from app.web.config import VERSION, BREAKING_CHANGES
from app.shared.log import log_error
from app.web.db import crud
from app.shared.schemas import ActiveUser, UsageResponse from app.shared.schemas import ActiveUser, UsageResponse
from app.web.db.user_state import UserState from app.web.db.user_state import UserState
from app.web.security import get_user_auth, bearer_security, get_user_state from app.web.security import get_user_state
from app.shared.user_groups import GroupInfo from app.shared.user_groups import GroupInfo
default_router = APIRouter() default_router = APIRouter()
@default_router.get("/") @default_router.get("/")
async def home(request: Request): async def home():
# TODO: maybe split into 2 routes: one non authenticated and one authenticated for the groups info only, necessary only for the extension return JSONResponse({"version": VERSION, "breakingChanges": BREAKING_CHANGES})
status = {"version": VERSION, "breakingChanges": BREAKING_CHANGES}
try:
email = await get_user_auth(await bearer_security(request))
status["groups"] = crud.get_user_groups(email)
except HTTPException: pass # not authenticated is fine
except Exception as e: log_error(e)
return JSONResponse(status)
@default_router.get("/health") @default_router.get("/health")