Drift — miljøvariabler, seed, reset og tests¶
Backend-tests¶
CI kører bunx tsc --noEmit (blokerende typecheck-gate, 0 fejl) og
derefter bun run test (med preload src/test/setup.ts) mod en dedikeret
postgres. Setup'en nægter at køre hvis DATABASE_URL ikke indeholder
"test" (suiten wiper databasen mellem filer). Lokalt: opret
backend/.env.test med DATABASE_URL til en test-database — de øvrige
påkrævede variabler får fornuftige defaults i setup'en.
Test-helperen (src/test/helpers/auth.ts) provisionerer brugere som appen
gør det (users + accounts-række) og logger ind via det rigtige Better
Auth-endpoint, så hver test-aktør har en ægte session-cookie og aktiv
organisation.
Miljøvariabler og fail-fast-validering¶
Backend validerer sit miljø ved opstart i backend/src/config/env.ts.
Mangler én eller flere påkrævede variabler, logges én fejlbesked med
alle manglende navne, og processen stopper med exit-kode 1.
Påkrævede variabler:
| Variabel | Hvorfor påkrævet |
|---|---|
DATABASE_URL |
Postgres-forbindelse |
BETTER_AUTH_SECRET |
Session-signering (legacy JWT_SECRET virker kun som compose-fallback, se ADR 0001) |
FRONTEND_URL |
Eneste tilladte CORS-origin (HTTP + Socket.io). Uden den faldt Socket.io tidligere tilbage til wildcard * |
ONLYOFFICE_JWT_SECRET |
Eneste beskyttelse af de offentlige dokument-download/callback-endpoints |
Valgfrie variabler (med defaults) er dokumenteret i:
.env.example(repo-rod) — Docker Compose-templatebackend/.env.example— alt hvad backend-processen læserfrontend/.env.example— Vite build-time-variabler (normalt unødvendige)
Demo-seed (SEED_DB)¶
SEED_DB=1 kører backend/scripts/seedDemoData.ts ved boot — idempotent og
ikke-destruktivt. Sæt til 1 for ét deploy, og tilbage til 0 bagefter.
Review-miljøer i CI sætter den automatisk.
Databasereset (destruktivt)¶
Reset kan ikke udløses via miljøvariabler — en container-genstart må
aldrig kunne slette data. Det gamle RESET_DB=1-boot-flag er fjernet.
Kør i stedet det interaktive script inde i backend-containeren:
docker compose exec backend sh scripts/reset-db.sh
Scriptet:
- Viser hvilken database der rammes (uden password).
- Kræver at du taster
RESET(alt andet afbryder). - Kører
prisma migrate reset --force --skip-seed+prisma migrate deploy. - Tilbyder at køre demo-seed bagefter.
Det nægter at køre uden TTY, og der findes bevidst intet --force-flag.