import { afterAll, beforeAll, describe, expect, it } from 'vitest' import { createPrismaClient, type PrismaClient } from '../src/index.js' /** * Prüft den Zustand, den `pnpm db:seed` herstellt. Das ist kein Testinhalt, * sondern Konfiguration, ohne die die Anwendung nicht sinnvoll läuft. */ const url = process.env.DIRECT_DATABASE_URL ?? process.env.DATABASE_URL const suite = url ? describe : describe.skip let db: PrismaClient suite('Auslieferungszustand', () => { beforeAll(() => { db = createPrismaClient(url) }) afterAll(async () => { await db.$disconnect() }) it('kennt sechs Freigabestufen, benannt nach den Zugangsrollen', async () => { const levels = await db.clearanceLevelConfig.findMany({ orderBy: { level: 'asc' } }) expect(levels.map((l) => l.level)).toEqual([0, 1, 2, 3, 4, 5]) expect(levels.map((l) => l.name)).toEqual([ 'Unclassified', 'Restricted Access', 'Confidential Access', 'Sensitive Access', 'Critical Operations', 'Executive Oversight', ]) }) it('verbirgt die Existenz ab Stufe 3, darunter nicht', async () => { const levels = await db.clearanceLevelConfig.findMany({ orderBy: { level: 'asc' } }) expect(levels.map((l) => l.hiddenBelow)).toEqual([false, false, false, true, true, true]) }) it('liefert die Änderungsrichtlinie mit Karenzzeit und ohne Markierung aus', async () => { const setting = await db.appSetting.findUnique({ where: { id: 1 } }) expect(setting?.entryEditPolicy).toBe('GRACE_WINDOW') expect(setting?.entryEditGraceMinutes).toBe(15) expect(setting?.entryEditMarkGrace).toBe(false) }) it('ordnet im Auslieferungszustand keiner Rolle Rechte zu', async () => { // entry.edit_own, entry.edit_any und entry.retract schaltet der Leiter // bewusst frei. Siehe docs/03-auth-und-rechte.md. expect(await db.roleMapping.count()).toBe(0) }) })