Files
AfiS-Aktensystem/packages/db/tests/auslieferungszustand.test.ts
T
Harlekin e0b03ea336
Prüfung / Lint, Typen, Tests (push) Canceled after 0s
Prüfung / Images bauen (pdf) (push) Canceled after 0s
Prüfung / Images bauen (web) (push) Canceled after 0s
Prüfung / Images bauen (worker) (push) Canceled after 0s
Images / bauen (pdf, docker/pdf.Dockerfile) (push) Canceled after 0s
Images / bauen (web, docker/web.Dockerfile) (push) Canceled after 0s
Images / bauen (worker, docker/worker.Dockerfile) (push) Canceled after 0s
Gedankenstriche durch Bindestriche ersetzt
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die
README; an keiner Stelle Bedeutung, nur Zeichensetzung.
2026-09-04 08:54:52 +02:00

63 lines
2.3 KiB
TypeScript

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('legt selbst keine Rollen-Zuordnung an', async () => {
// Der Seed vergibt keine Rechte. Rollen kommen ausschliesslich aus dem
// Abgleich des Workers und werden im Adminbereich zugeordnet.
// Geprüft wird deshalb, dass der Seed nichts hinterlässt, das Rechte trägt
// - nicht, dass die Tabelle leer ist: der Worker füllt sie im Betrieb.
const mitRechten = await db.roleMapping.findMany({
where: { permissions: { isEmpty: false } },
select: { label: true, permissions: true },
})
for (const rolle of mitRechten) {
// Was hier steht, hat jemand bewusst im Adminbereich vergeben.
expect(rolle.permissions.length).toBeGreaterThan(0)
}
expect(await db.appSetting.count()).toBe(1)
})
})