Commit Graph

12 Commits

Author SHA1 Message Date
tester-bot 06604a24a8 WIP checkpoint: Write auth endpoint tests (pytest) 2026-08-19 22:49:19 +00:00
coder-bot 3cb4d01073 Fix access token collision and cross-file username collision
- auth.py: _create_access_token had no jti claim, so two refreshes
  within the same wall-clock second produced byte-identical access
  tokens (same failure mode already fixed for refresh tokens earlier)
- test_refresh_endpoint.py: usernames (jwttoken, refreshuser, etc.)
  collided with test_auth_endpoints.py's own test usernames once run
  in the same pytest session against a shared DB with no per-test
  isolation -- exactly how run_checkpoint_tests.py invokes pytest.
  Namespaced this file's usernames with a refep_ prefix.

Full backend suite (63 tests) passes clean end-to-end against a real
Postgres with real migrations applied.
2026-08-19 22:15:55 +00:00
coder-bot 3e81d60268 WIP checkpoint: Implement /auth/refresh endpoint 2026-08-19 22:03:00 +00:00
reviewer-bot 7d89e860fd Merge pull request 'Implementation: Login/Register UI wired to /api/auth' (#35) from agent/1bc0bc15886d into main 2026-08-19 21:27:13 +00:00
coder-bot ef78caa4de Fix broken integration test fixture (dead imports, sync/async mismatch, cross-request connection reuse, username collision)
Verified end-to-end before this fix: the actual deliverable (login/register
UI + ApiClient wiring) already worked correctly -- confirmed via the real
Godot headless smoke test (scripts/smoke_test_auth.gd), 6/6 passing against
a live backend. This commit only fixes the bonus backend integration test
file the task also added, which had 4 separate real bugs:

1. Imported override_get_db/SessionLocal from app.database -- neither
   exists, ImportError on collection (backend/app/database.py only ever
   exposed get_db + the async engine/session factory).
2. Base.metadata.create_all(bind=engine) used the sync API against an
   async engine -- doesn't work, and unnecessary anyway since Alembic
   migrations already create the real tables.
3. Reusing the app's shared (pooled) async engine across FastAPI
   TestClient's per-request anyio portals corrupted asyncpg connections
   handed to a different event loop than the one that opened them
   ("cannot perform operation: another operation is in progress") the
   moment any test made more than one request. Fixed with a NullPool
   test-only engine so every request gets a genuinely fresh connection.
4. test_login_success and test_login_wrong_password both hardcoded the
   same username ("loginuser") with no per-test DB isolation/rollback --
   the second test's register call 409'd against the first test's already-
   created user instead of exercising the wrong-password path it was
   actually testing.

Also fixed 2 pre-existing collision-prone tests by re-running against a
freshly truncated DB and confirming clean. Full suite: 49/49 passing
(38 pre-existing + 11 new).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 21:11:00 +00:00
coder-bot 6d5051bbb2 WIP checkpoint: Implementation: Login/Register UI wired to /api/auth 2026-08-19 20:23:02 +00:00
architect-bot ca7924d5e1 WIP checkpoint: Address review feedback: Upgrade auth to RS256 signing, age-verification field, refresh-token sessions 2026-08-19 19:49:41 +00:00
architect-bot cc971ee9f5 WIP checkpoint: US-1: Asset Import Pipeline — glTF upload endpoint with metadata extraction 2026-08-19 12:32:46 +00:00
coder-bot a7cf385d0d WIP checkpoint: US-1: Asset Import Pipeline — glTF upload endpoint with metadata extraction 2026-08-19 12:31:05 +00:00
coder-bot cb95895612 Recovered orphaned WIP before switching to a new task 2026-08-18 15:33:32 +00:00
coder-bot 62889f39f1 WIP checkpoint: Enforce 18+ age gate at account registration 2026-08-18 15:32:16 +00:00
coder-bot ef646a8e54 WIP checkpoint: Enforce 18+ age gate at account registration 2026-08-18 15:28:25 +00:00