Skip to content

Commit 6828e28

Browse files
committed
fix(api): guard get_user against non-dict session
1 parent 24869fc commit 6828e28

3 files changed

Lines changed: 15 additions & 3 deletions

File tree

ATTRIBUTIONS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ SOFTWARE.
360360

361361
```
362362

363-
## aignostics-foundry-core (0.6.2) - MIT License
363+
## aignostics-foundry-core (0.7.0) - MIT License
364364

365365
🏭 Foundational infrastructure for Foundry components.
366366

src/aignostics_foundry_core/api/auth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -300,13 +300,13 @@ async def me(user: Annotated[dict[str, Any], Depends(get_user)]):
300300

301301
try:
302302
auth_client = get_auth_client(request)
303-
session: dict[str, Any] = await auth_client.require_session(request, Response()) # pyright: ignore[reportAttributeAccessIssue, reportUnknownMemberType, reportUnknownVariableType]
303+
session: dict = await auth_client.require_session(request, Response()) # type: ignore[reportUnknownVariableType]
304304
except Exception: # noqa: BLE001
305305
msg = "No session found"
306306
logger.debug(msg)
307307
return None
308308

309-
raw_user = session.get("user")
309+
raw_user: dict | None = session.get("user") if isinstance(session, dict) else None # type: ignore[reportUnknownVariableType]
310310
if not raw_user or not isinstance(raw_user, dict):
311311
msg = "Failed to retrieve user information from session"
312312
logger.critical(msg)

tests/aignostics_foundry_core/api/auth_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,18 @@ async def test_get_user_returns_none_when_exp_claim_missing(self) -> None:
168168

169169
assert result is None
170170

171+
async def test_get_user_returns_none_when_session_is_not_a_dict(self) -> None:
172+
"""get_user returns None when require_session returns a non-dict value."""
173+
request = MagicMock()
174+
cookie = "fake-cookie"
175+
fake_client = MagicMock()
176+
fake_client.require_session = AsyncMock(return_value="not-a-dict")
177+
request.app.state.auth_client = fake_client
178+
179+
result = await get_user(request, cookie)
180+
181+
assert result is None
182+
171183
async def test_get_user_returns_user_for_valid_session(self) -> None:
172184
"""get_user returns the user dict when the session is valid and not expired."""
173185
request = MagicMock()

0 commit comments

Comments
 (0)