25 lines
926 B
JavaScript
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))
|
|
})
|