Files
calendar/apps/api/v1/test/lib/utils/retrieveScopedAccessibleUsers.integration-test.ts
T
sean-brydonandGitHub 12c5005305 chore: routingform org attribute seed (#17510)
* seed to org

* more org+routing form seed improvments

* add routing responses

* check if attributes already exist to prevent crash

* remove files not for PR

* fix type error

* fix connection

* assign manually

* fix seed

* update to match integration tests

* fix integration test to new user count
2024-11-14 14:50:26 -03:00

91 lines
3.2 KiB
TypeScript

import { describe, it, expect } from "vitest";
import prisma from "@calcom/prisma";
import {
getAccessibleUsers,
retrieveOrgScopedAccessibleUsers,
} from "../../../lib/utils/retrieveScopedAccessibleUsers";
describe("retrieveScopedAccessibleUsers tests", () => {
describe("getAccessibleUsers", () => {
it("Does not return members when only admin user ID is supplied", async () => {
const adminUser = await prisma.user.findFirstOrThrow({ where: { email: "owner1-acme@example.com" } });
const accessibleUserIds = await getAccessibleUsers({
memberUserIds: [],
adminUserId: adminUser.id,
});
expect(accessibleUserIds.length).toBe(0);
});
it("Does not return members when admin user ID is not an admin of the user", async () => {
const adminUser = await prisma.user.findFirstOrThrow({ where: { email: "owner1-dunder@example.com" } });
const memberOneUser = await prisma.user.findFirstOrThrow({
where: { email: "member1-acme@example.com" },
});
const accessibleUserIds = await getAccessibleUsers({
memberUserIds: [memberOneUser.id],
adminUserId: adminUser.id,
});
expect(accessibleUserIds.length).toBe(0);
});
it("Returns members when admin user ID is supplied and members IDs are supplied", async () => {
const adminUser = await prisma.user.findFirstOrThrow({ where: { email: "owner1-acme@example.com" } });
const memberOneUser = await prisma.user.findFirstOrThrow({
where: { email: "member1-acme@example.com" },
});
const memberTwoUser = await prisma.user.findFirstOrThrow({
where: { email: "member2-acme@example.com" },
});
const accessibleUserIds = await getAccessibleUsers({
memberUserIds: [memberOneUser.id, memberTwoUser.id],
adminUserId: adminUser.id,
});
expect(accessibleUserIds.length).toBe(2);
expect(accessibleUserIds).toContain(memberOneUser.id);
expect(accessibleUserIds).toContain(memberTwoUser.id);
});
});
describe("retrieveOrgScopedAccessibleUsers", () => {
it("Does not return members when admin user ID is an admin of an org", async () => {
const memberOneUser = await prisma.user.findFirstOrThrow({
where: { email: "member1-acme@example.com" },
});
const accessibleUserIds = await retrieveOrgScopedAccessibleUsers({
adminId: memberOneUser.id,
});
expect(accessibleUserIds.length).toBe(0);
});
it("Returns members when admin user ID is an admin of an org", async () => {
const adminUser = await prisma.user.findFirstOrThrow({
where: { email: "owner1-acme@example.com" },
});
const accessibleUserIds = await retrieveOrgScopedAccessibleUsers({
adminId: adminUser.id,
});
const memberOneUser = await prisma.user.findFirstOrThrow({
where: { email: "member1-acme@example.com" },
});
const memberTwoUser = await prisma.user.findFirstOrThrow({
where: { email: "member2-acme@example.com" },
});
expect(accessibleUserIds.length).toBe(11);
expect(accessibleUserIds).toContain(memberOneUser.id);
expect(accessibleUserIds).toContain(memberTwoUser.id);
expect(accessibleUserIds).toContain(adminUser.id);
});
});
});