mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
End-to-end integration test for the multi-provider redundancy runner. Boots the postgres testcontainer, seeds a user with both an OpenAI key and an Anthropic key plus an explicit chain (openai -> anthropic), intercepts upstream HTTP calls via fetch-spy, and exercises three scenarios: 1. Hard-fail-then-success cascade. OpenAI primary returns 401, the runner walks to Anthropic, the route surfaces a 200 with `chainProviderType: "anthropic"` and `fallbackHopCount: 1` recorded in the audit log. 2. All-fail cascade. Every chain entry returns 503, the route surfaces a 503 with the "temporarily unavailable" envelope. 3. Last-working cache. After scenario 1 the runner remembers Anthropic was the working provider; the next call (cache bypass forced via nulled `insightsCachedAt`) reorders the chain so Anthropic is tried first and only ONE upstream fetch fires (not two — the doomed OpenAI 401 round-trip is skipped). Test routing on URL substring (`/chat/completions` for OpenAI, `/messages` for Anthropic) instead of headers so the assertion is robust against any future header-shape drift in the clients. Constrained to user-level providers because the testcontainer migration history pre-dates several `app_settings` columns added through schema-only edits — touching admin-openai resolution would blow up before the chain runner even sees the request. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>