357c2882ad
* refactor: apply biome formatting to Phase 1 packages Packages formatted: - packages/app-store-cli - packages/config - packages/dayjs - packages/debugging - packages/embeds/embed-react - packages/embeds/embed-snippet - packages/kysely - packages/platform/constants - packages/platform/utils - packages/testing - packages/tsconfig Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix: restore non-null assertions in embed-snippet to fix type error Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix: remove ESM import from CommonJS config file Biome incorrectly added 'import process from node:process' to a CommonJS file that uses require(). This breaks Jest which expects CommonJS syntax. The process global is already available in Node.js without explicit import. Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * refactor: exclude packages/embeds from Phase 1 formatting Per user request, reverting all biome formatting changes in packages/embeds to handle separately. Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix: restore const enum for BookingLocations Biome changed 'const enum' to 'enum' which is a semantic change. Reverting to keep the PR purely formatting-only. Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
91 lines
3.4 KiB
TypeScript
91 lines
3.4 KiB
TypeScript
import {
|
|
BOOKING_READ,
|
|
BOOKING_WRITE,
|
|
EVENT_TYPE_READ,
|
|
EVENT_TYPE_WRITE,
|
|
SCHEDULE_READ,
|
|
SCHEDULE_WRITE,
|
|
} from "@calcom/platform-constants";
|
|
import { hasPermission, hasPermissions, listPermissions } from "../permissions";
|
|
|
|
describe("Permissions Function: hasPermission", () => {
|
|
let userPermissions: number;
|
|
beforeEach(() => {
|
|
userPermissions = 0;
|
|
});
|
|
it("it should return true if user has the permission", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = hasPermission(userPermissions, EVENT_TYPE_READ);
|
|
expect(result).toEqual(true);
|
|
});
|
|
|
|
it("it should return false if user does not have the permission", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = hasPermission(userPermissions, BOOKING_WRITE);
|
|
expect(result).toEqual(false);
|
|
});
|
|
|
|
it("it should return false if user does not have the permission", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = hasPermission(userPermissions, SCHEDULE_WRITE);
|
|
expect(result).toEqual(false);
|
|
});
|
|
});
|
|
|
|
describe("Permissions Function: hasPermissions", () => {
|
|
let userPermissions: number;
|
|
beforeEach(() => {
|
|
userPermissions = 0;
|
|
});
|
|
it("it should return true if user has all the permissions", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = hasPermissions(userPermissions, [EVENT_TYPE_READ, SCHEDULE_READ]);
|
|
expect(result).toEqual(true);
|
|
});
|
|
|
|
it("it should return false if user does not have all the permissions", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = hasPermissions(userPermissions, [BOOKING_WRITE, SCHEDULE_READ, EVENT_TYPE_READ]);
|
|
expect(result).toEqual(false);
|
|
});
|
|
|
|
it("it should return false if user does not have all permissions", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = hasPermissions(userPermissions, [SCHEDULE_WRITE, SCHEDULE_READ]);
|
|
expect(result).toEqual(false);
|
|
});
|
|
});
|
|
|
|
describe("Permissions Function: listPermission", () => {
|
|
let userPermissions: number;
|
|
beforeEach(() => {
|
|
userPermissions = 0;
|
|
});
|
|
it("it should return the list of permissions a user has", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
const result = listPermissions(userPermissions);
|
|
const shouldContainPermissions = [EVENT_TYPE_READ, SCHEDULE_READ];
|
|
const shouldNotContainPermissions = [SCHEDULE_WRITE, EVENT_TYPE_WRITE, BOOKING_READ, BOOKING_WRITE];
|
|
shouldContainPermissions.forEach((permission) => expect(result).toContain(permission));
|
|
shouldNotContainPermissions.forEach((permission) => expect(result).not.toContain(permission));
|
|
});
|
|
it("it should return the list of permissions a user has", () => {
|
|
userPermissions |= EVENT_TYPE_READ;
|
|
userPermissions |= SCHEDULE_READ;
|
|
userPermissions |= BOOKING_WRITE;
|
|
userPermissions |= BOOKING_READ;
|
|
const result = listPermissions(userPermissions);
|
|
const shouldContainPermissions = [EVENT_TYPE_READ, SCHEDULE_READ, BOOKING_WRITE, BOOKING_READ];
|
|
const shouldNotContainPermissions = [SCHEDULE_WRITE, EVENT_TYPE_WRITE];
|
|
shouldContainPermissions.forEach((permission) => expect(result).toContain(permission));
|
|
shouldNotContainPermissions.forEach((permission) => expect(result).not.toContain(permission));
|
|
});
|
|
});
|