Files
manyangles/apps/web/src/server/permission-ceiling.test.ts
T

18 lines
1.1 KiB
TypeScript

import { expect, test } from "bun:test";
import { withPermissionCeiling } from "./permission-ceiling";
import { hasPlatformPermission, resolveEventAccess } from "./roles";
test("assistant ceilings hide private photos even from owner tokens", () => {
withPermissionCeiling(["photos.read"], () => {
expect(resolveEventAccess({ membershipRole: "owner", platformRole: null })!.permissions).toEqual(["photos.read"]);
expect(hasPlatformPermission("super_admin", "platform.users.manage")).toBe(false);
});
expect(resolveEventAccess({ membershipRole: "owner", platformRole: null })!.permissions).toContain("photos.private.read");
});
test("concurrent requests cannot share permission ceilings", async () => {
await Promise.all([
withPermissionCeiling(["photos.read"], async () => { await Promise.resolve(); expect(resolveEventAccess({ membershipRole: "owner", platformRole: null })!.permissions).toEqual(["photos.read"]); }),
withPermissionCeiling(["notes.read"], async () => { await Promise.resolve(); expect(resolveEventAccess({ membershipRole: "owner", platformRole: null })!.permissions).toEqual(["notes.read"]); }),
]);
});