Gå til indholdet

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-template
  • backend/.env.example — alt hvad backend-processen læser
  • frontend/.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:

  1. Viser hvilken database der rammes (uden password).
  2. Kræver at du taster RESET (alt andet afbryder).
  3. Kører prisma migrate reset --force --skip-seed + prisma migrate deploy.
  4. Tilbyder at køre demo-seed bagefter.

Det nægter at køre uden TTY, og der findes bevidst intet --force-flag.