Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/utils/helpers/PermissionsHelper.test.ts
T

48 lines
1.7 KiB
TypeScript

import { describe, expect, test } from "vitest";
import { getUserHasPermission } from "./PermissionsHelper";
import type { DefaultPermission } from "~/application/dtos/shared/DefaultPermissions";
import type { AppOrAdminData } from "../data/useAppOrAdminData";
function permissionsData(patch: Partial<AppOrAdminData> = {}): AppOrAdminData {
return {
user: {} as AppOrAdminData["user"],
myTenants: [],
currentTenant: null,
allRoles: [],
permissions: [],
entities: [],
entityGroups: [],
isSuperUser: false,
isSuperAdmin: false,
myGroups: [],
onboardingSession: null,
tenantTypes: [],
...patch,
};
}
describe("getUserHasPermission", () => {
test("defaults closed when permission data is missing", () => {
expect(getUserHasPermission(permissionsData({ permissions: undefined as unknown as AppOrAdminData["permissions"] }), "app.settings.members.view")).toBe(false);
});
test("allows super admins before checking permission payload availability", () => {
expect(
getUserHasPermission(
permissionsData({ isSuperAdmin: true, permissions: undefined as unknown as AppOrAdminData["permissions"] }),
"app.settings.members.view"
)
).toBe(true);
});
test("checks explicit app and entity permissions", () => {
const entityPermission = "entity.contact.read" as DefaultPermission;
const data = permissionsData({ permissions: ["app.settings.members.view", entityPermission] });
expect(getUserHasPermission(data, "app.settings.members.view")).toBe(true);
expect(getUserHasPermission(data, entityPermission)).toBe(true);
expect(getUserHasPermission(data, "app.settings.subscription.view")).toBe(false);
});
});