import 'reflect-metadata'; import assert from 'node:assert/strict'; import test from 'node:test'; import { REQUIRED_PERMISSIONS_KEY } from '../../src/authorization/decorators/require-permissions.decorator'; import { InspectionVisitsController } from '../../src/inspection-visits/inspection-visits.controller'; function permissionFor(method: string): string[] { const controller = InspectionVisitsController.prototype; const handler = controller[method as keyof typeof controller]; return Reflect.getMetadata(REQUIRED_PERMISSIONS_KEY, handler) as string[]; } test('inspection visit endpoints separate reading, planning, assignment and execution', () => { assert.deepEqual(permissionFor('list'), ['inspections.read']); assert.deepEqual(permissionFor('get'), ['inspections.read']); assert.deepEqual(permissionFor('assignees'), ['inspections.assign']); assert.deepEqual(permissionFor('create'), ['inspections.manage', 'inspections.assign']); assert.deepEqual(permissionFor('update'), ['inspections.manage']); assert.deepEqual(permissionFor('replaceAssets'), ['inspections.manage']); assert.deepEqual(permissionFor('replaceTeam'), ['inspections.assign']); assert.deepEqual(permissionFor('changeStatus'), ['inspections.manage']); assert.deepEqual(permissionFor('start'), ['inspections.execute']); });