Commit Graph

2 Commits

Author SHA1 Message Date
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