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
375 Vorkommen in 210 Dateien. Betrifft Kommentare, Oberflaechentexte und die README; an keiner Stelle Bedeutung, nur Zeichensetzung.
63 lines
2.3 KiB
TypeScript
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)
|
|
})
|
|
})
|