import 'reflect-metadata'; import assert from 'node:assert/strict'; import test from 'node:test'; import { AssetOperationalRelationsController } from '../../src/asset-master/asset-operational-relations.controller'; import { REQUIRED_PERMISSIONS_KEY } from '../../src/authorization/decorators/require-permissions.decorator'; function permissionFor(method: string): string[] { const controller = AssetOperationalRelationsController.prototype; const handler = controller[method as keyof typeof controller]; return Reflect.getMetadata(REQUIRED_PERMISSIONS_KEY, handler) as string[]; } test('D5.3 separates relation reading from relation management', () => { assert.deepEqual(permissionFor('areas'), ['asset_relations.read']); assert.deepEqual(permissionFor('companies'), ['asset_relations.read']); assert.deepEqual(permissionFor('companiesForArea'), ['asset_relations.read']); assert.deepEqual(permissionFor('areasForCompany'), ['asset_relations.read']); assert.deepEqual(permissionFor('list'), ['asset_relations.read']); assert.deepEqual(permissionFor('create'), ['asset_relations.manage']); assert.deepEqual(permissionFor('end'), ['asset_relations.manage']); });