Files
peardata/test/acl.test.js
T
2026-07-18 16:22:56 -04:00

25 lines
926 B
JavaScript

import test from 'brittle'
import { Roles, roleAllows, MethodRoles } from '../shared/protocol.js'
import { assertAllowed, maxRole } from '../server/core/acl.js'
test('assertAllowed denies viewer mutating ops', (t) => {
t.exception(() => assertAllowed(Roles.viewer, 'runJob'))
t.exception(() => assertAllowed(Roles.viewer, 'mintInvite'))
assertAllowed(Roles.operator, 'runJob')
assertAllowed(Roles.operator, 'setAlertConfig')
assertAllowed(Roles.admin, 'mintInvite')
t.pass()
})
test('maxRole elevates', (t) => {
t.is(maxRole(Roles.viewer, Roles.operator), Roles.operator)
t.is(maxRole(Roles.admin, Roles.operator), Roles.admin)
})
test('viewer can read metrics', (t) => {
t.ok(roleAllows(Roles.viewer, MethodRoles.queryData))
t.ok(roleAllows(Roles.viewer, MethodRoles.listCharts))
t.ok(roleAllows(Roles.viewer, MethodRoles.handshake))
t.ok(roleAllows(Roles.viewer, MethodRoles.subscribeMetrics))
})