70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
import assert from "node:assert/strict"
|
|
import { hasPermission, permissionForRequest } from "./permissions.js"
|
|
|
|
assert.equal(hasPermission(["mm:servers:write"], "mm:servers:read"), true)
|
|
assert.equal(hasPermission(["mm:servers:admin"], "mm:servers:write"), true)
|
|
assert.equal(hasPermission(["mm:servers:read"], "mm:servers:write"), false)
|
|
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/servers"),
|
|
"mm:servers:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("POST", "/api/servers"),
|
|
"mm:servers:write",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/system/database/backup"),
|
|
"mm:settings:admin",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/statistics"),
|
|
"mm:traffic:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("POST", "/api/traffic/flow/purge"),
|
|
"mm:traffic:write",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/unknown-thing"),
|
|
"mm:dashboard:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/wireguard"),
|
|
"mm:network:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("POST", "/api/wireguard/interfaces"),
|
|
"mm:network:write",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/firewall/all"),
|
|
"mm:network:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/gre/tunnels"),
|
|
"mm:network:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("POST", "/api/gre/tunnels"),
|
|
"mm:network:write",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("GET", "/api/users"),
|
|
"mm:users:read",
|
|
)
|
|
assert.equal(
|
|
permissionForRequest("POST", "/api/users"),
|
|
"mm:users:write",
|
|
)
|
|
assert.equal(hasPermission(["mm:settings:admin"], "mm:users:read"), true)
|
|
assert.equal(hasPermission(["mm:settings:admin"], "mm:users:write"), true)
|
|
assert.equal(hasPermission(["mm:dashboard:read"], "mm:users:write"), false)
|
|
|
|
assert.equal(permissionForRequest("GET","/api/servers/1/ospf"),"mm:network:read")
|
|
assert.equal(permissionForRequest("POST","/api/servers/1/ospf/optimize/preview?x=1"),"mm:network:read")
|
|
assert.equal(permissionForRequest("POST","/api/servers/1/ospf/optimize"),"mm:network:write")
|
|
assert.equal(permissionForRequest("POST","/api/servers/1/ospf/optimize/preview/extra"),"mm:network:write")
|
|
assert.equal(permissionForRequest("PUT","/api/servers/1"),"mm:servers:write")
|
|
console.log("permissions.test.ts: ok")
|