Files
Jyotisha/frontend/tests/admin-auth.test.ts
T

50 lines
1.3 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import { authorizeAdminAccess } from "../src/lib/admin/auth-policy.ts";
import type { IdentityUser } from "../src/modules/identity/contracts.ts";
function user(role: string[]): IdentityUser {
return {
id: "11111111-1111-4111-8111-111111111111",
email: "admin@example.com",
emailVerified: true,
name: "Admin",
image: null,
role,
};
}
test("anonymous admin access is 401", () => {
assert.deepEqual(authorizeAdminAccess(null, "read"), {
allowed: false,
status: 401,
});
});
test("viewer may read but may not write", () => {
assert.deepEqual(authorizeAdminAccess(user(["user", "viewer"]), "read"), {
allowed: true,
role: "viewer",
});
assert.deepEqual(authorizeAdminAccess(user(["viewer"]), "write"), {
allowed: false,
status: 403,
});
});
test("admin may read and write while unprivileged users are 403", () => {
assert.deepEqual(authorizeAdminAccess(user(["admin"]), "read"), {
allowed: true,
role: "admin",
});
assert.deepEqual(authorizeAdminAccess(user(["admin"]), "write"), {
allowed: true,
role: "admin",
});
assert.deepEqual(authorizeAdminAccess(user(["user"]), "read"), {
allowed: false,
status: 403,
});
});