cards/apps/api/tests
Till JS e1ddbf34b3
Some checks are pending
CI / validate (push) Waiting to run
security(cards): fail-secure dev-stub, headers, rate-limit, dsgvo audit
Behebt live verifiziertes Auth-Bypass auf cardecky-api.mana.how
(X-User-Id → founder-Tier) und zieht im selben Patch das fehlende
Operations-/Compliance-Fundament nach.

* Auth-Middleware fail-secure: opt-in via CARDS_AUTH_DEV_STUB="true"
  (war opt-out, Default true). Compose-Default flipped auf "false",
  NODE_ENV="production" für cards-api ergänzt, env-Template
  dokumentiert. vitest.config.ts + tests/setup.ts aktivieren den
  Stub gezielt für Test-Suiten.
* Security-Headers: Hono secureHeaders() in apps/api,
  SvelteKit hooks.server.ts mit X-Frame/X-Content-Type/Referrer/
  HSTS in apps/web. CSP bewusst ausgelassen — eigener Sprint.
* CORS-localhost-Whitelist nur außerhalb Prod.
* Rate-Limiting (in-memory sliding window, dependency-frei) auf
  share.receive 60/min/IP, media.upload 30/min/user,
  decks.generate + decks.from-image 10/min/user, dsgvo.* 10/min/IP.
* Health-Endpoint mit echter DB- und MinIO-Probe; /healthz bleibt
  Liveness, /healthz/details ist Readiness mit 503 bei Failure.
* DSGVO-Honesty: storage_ok + storage_error im Response (statt
  schluckend console.warn), Account-UI zeigt Fehler-Toast.
* Audit-Log: strukturierte JSON-Zeile (kind: "audit") auf stdout
  für /dsgvo/export, /dsgvo/delete, /me/export, /me/delete.
* Bug-Fix: duplizierte case "multiple-choice"-Clause in fsrs.ts.

Verifiziert: apps/api 17 Files / 104 Tests grün, apps/web check
0 errors. Deploy auf Mac Mini steht noch aus.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:56:03 +02:00
..
cards.test.ts Phase 9l: Image-Occlusion als 4. MVP-CardType 2026-05-08 18:50:45 +02:00
decks.test.ts Phase 3: Domain-Modell + Decks/Cards/Reviews-CRUD 2026-05-08 14:21:54 +02:00
dsgvo.test.ts Phase 5: Föderations-Endpunkte — Cards ist föderierter Peer 2026-05-08 17:10:35 +02:00
health.test.ts Phase 0+1: Repo-Skelett für Cards-Greenfield 2026-05-08 14:08:41 +02:00
lib-reviews.test.ts test(api): Unit-Tests für makeInitialReviewRows und fetchUrlContent 2026-05-10 16:40:30 +02:00
lib-url-fetch.test.ts test(api): Unit-Tests für makeInitialReviewRows und fetchUrlContent 2026-05-10 16:40:30 +02:00
marketplace-diff.test.ts Phase 12 R3: Marketplace γ + δ — Discovery + Engagement + Subscribe + Smart-Merge 2026-05-09 15:27:39 +02:00
marketplace-semver.test.ts Phase 12 R4: Marketplace ε — Pull-Requests + Card-Discussions 2026-05-09 15:50:16 +02:00
marketplace-slug.test.ts Phase 12 R2: Marketplace-Backend α + β — Authors + Deck-Init + Publish 2026-05-09 15:13:58 +02:00
marketplace-version-hash.test.ts Phase 12 R2: Marketplace-Backend α + β — Authors + Deck-Init + Publish 2026-05-09 15:13:58 +02:00
me.test.ts Phase 9e: Account-Page mit DSGVO-Self-Service 2026-05-08 18:03:41 +02:00
media.test.ts Phase 9k: Media-Upload via MinIO-Container 2026-05-08 18:42:56 +02:00
rate-limit.test.ts security(cards): fail-secure dev-stub, headers, rate-limit, dsgvo audit 2026-05-12 16:56:03 +02:00
reviews.test.ts Phase 3: Domain-Modell + Decks/Cards/Reviews-CRUD 2026-05-08 14:21:54 +02:00
search.test.ts Phase 5: Föderations-Endpunkte — Cards ist föderierter Peer 2026-05-08 17:10:35 +02:00
setup.ts security(cards): fail-secure dev-stub, headers, rate-limit, dsgvo audit 2026-05-12 16:56:03 +02:00
share.test.ts Phase 5: Föderations-Endpunkte — Cards ist föderierter Peer 2026-05-08 17:10:35 +02:00
tools.test.ts Phase 5: Föderations-Endpunkte — Cards ist föderierter Peer 2026-05-08 17:10:35 +02:00