import { PERMISSION_CATALOG } from '../src/auth/permissions/permission-catalog'; import { PrismaService } from '../src/prisma/prisma.service'; const KEY = 'voice-captures:use'; /** * The migration grants the T7 permission to the system roles (the boot-time * catalog sync only grants new permissions to ADMIN). Checked against the * migrated test database. */ describe('T7 voice permissions (e2e)', () => { let prisma: PrismaService; beforeAll(() => { prisma = new PrismaService(); }); afterAll(async () => { await prisma.$disconnect(); }); async function holds(roleKey: string): Promise { const grant = await prisma.rolePermission.findFirst({ where: { role: { key: roleKey }, permission: { key: KEY } }, }); return grant !== null; } it('ADMIN, BEEKEEPER and STAFF hold voice-captures:use', async () => { expect(await holds('ADMIN')).toBe(true); expect(await holds('BEEKEEPER')).toBe(true); expect(await holds('STAFF')).toBe(true); }); it('READONLY and API_CLIENT do not', async () => { expect(await holds('READONLY')).toBe(false); expect(await holds('API_CLIENT')).toBe(false); }); it('matches the code catalog in the Sprache group at sortOrder 4000', async () => { const entry = PERMISSION_CATALOG.find((e) => e.key === KEY); const row = await prisma.permission.findUniqueOrThrow({ where: { key: KEY }, }); expect(entry).toBeDefined(); expect(row).toMatchObject({ resource: 'voice-captures', action: 'use', groupDe: 'Sprache', labelDe: 'Benutzen', sortOrder: 4000, }); expect(entry).toMatchObject({ groupDe: 'Sprache', sortOrder: 4000 }); }); });