fix(12): make api test suite hermetic — provide OIDC env so fallback skips DB
CI / changes (pull_request) Successful in 2s
CI / fast-checks (pull_request) Successful in 1m56s
CI / api (pull_request) Successful in 1m27s
CI / security (pull_request) Has been cancelled
CI / gate (pull_request) Has been cancelled
CI / harness (pull_request) Has been cancelled
CI / changes (pull_request) Successful in 2s
CI / fast-checks (pull_request) Successful in 1m56s
CI / api (pull_request) Successful in 1m27s
CI / security (pull_request) Has been cancelled
CI / gate (pull_request) Has been cancelled
CI / harness (pull_request) Has been cancelled
oidcConfigFallbackMiddleware (Phase 12) reads OIDC config from app_config on every /api/* request when OIDC_ISSUER/CLIENT_ID/AUTH_EXTERNAL_URL are absent. CI's api job sets no OIDC env, so events/login tests (which mock db with a partial query chain) 500'd on every request. Local runs passed only because ambient .env supplied the vars. Set dummy OIDC config in vitest test.env so the middleware always takes the env path — hermetic across CI and local. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
a193bc8236
commit
717c859f3c
@@ -18,11 +18,27 @@ export default defineConfig({
|
|||||||
// list tables; running test files in parallel causes FK violations when one
|
// list tables; running test files in parallel causes FK violations when one
|
||||||
// file's afterEach deletes rows that another file's test is still using.
|
// file's afterEach deletes rows that another file's test is still using.
|
||||||
fileParallelism: false,
|
fileParallelism: false,
|
||||||
env: isCI
|
env: {
|
||||||
? {}
|
// OIDC discovery config — supplied so oidcConfigFallbackMiddleware
|
||||||
: {
|
// (src/auth/middleware.ts) always takes its env path and never reads
|
||||||
DB_NAME: 'familysync_test',
|
// app_config on every /api/* request. Without these, the middleware hits
|
||||||
DB_HOST: process.env.DB_HOST ?? '127.0.0.1',
|
// the DB, which 500s any test file that mocks `db` with a partial query
|
||||||
},
|
// chain (e.g. events/login). CI's api job provides no OIDC env, so this
|
||||||
|
// also makes the suite hermetic rather than depending on a local .env.
|
||||||
|
// Dummy values are safe: tests exercising the real OIDC flow mock
|
||||||
|
// @hono/oidc-auth directly.
|
||||||
|
OIDC_ISSUER: 'https://auth.test.local',
|
||||||
|
OIDC_CLIENT_ID: 'familysync-test',
|
||||||
|
OIDC_AUTH_EXTERNAL_URL: 'https://familysync.test.local',
|
||||||
|
// Local: force the isolated test DB so the dev `familysync` DB is never
|
||||||
|
// mutated. Under CI the job-level env already sets DB_NAME=familysync and
|
||||||
|
// DB_HOST=mariadb — do not override those.
|
||||||
|
...(isCI
|
||||||
|
? {}
|
||||||
|
: {
|
||||||
|
DB_NAME: 'familysync_test',
|
||||||
|
DB_HOST: process.env.DB_HOST ?? '127.0.0.1',
|
||||||
|
}),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user