18 lines
1.1 KiB
TypeScript
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"]); }),
|
|
]);
|
|
});
|