* move SystemField to features * migrate workflow service * merge two tests for team repository * update imports and migrate team repository * migrate delegation credential repository * migrate credential repository * migrate entityPermissionUtils * migrate hashedLink service and repository * migrate membership service * update imports * remove file * migrate buildEventUrlFromBooking * migrate getAllUserBookings to features * update imports * update organizationMock * migrate slots * migrate date-ranges to schedules dir * migrate getAggregatedAvailability * fix * refactor * migrate useCreateEventType hook to features * migrate assignValueToUser * migrate validateUsername to auth features * migrate system field back to lib * migrate getLabelValueMapFromResponses back to lib * update imports * use relative path * fix type checks * fix * fix * fix tests * update gh codeowners * fix * fix
103 lines
3.1 KiB
TypeScript
103 lines
3.1 KiB
TypeScript
import { organizationScenarios } from "@calcom/features/ee/organizations/__mocks__/organizationMock";
|
|
|
|
import { describe, it, expect, beforeEach, vi } from "vitest";
|
|
|
|
import { MembershipRole } from "@calcom/prisma/enums";
|
|
import { CreationSource } from "@calcom/prisma/enums";
|
|
import { inviteMembersWithNoInviterPermissionCheck } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler";
|
|
|
|
import { moveUserToMatchingOrg } from "./verify-email";
|
|
|
|
// TODO: This test passes but coverage is very low.
|
|
vi.mock("@calcom/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler");
|
|
vi.mock("@calcom/features/ee/organizations/repositories/OrganizationRepository");
|
|
vi.mock("@calcom/prisma", () => {
|
|
return {
|
|
prisma: vi.fn(),
|
|
};
|
|
});
|
|
|
|
vi.mock("@calcom/features/ee/billing/stripe-billing-service", () => {
|
|
return {
|
|
StripeBillingService: vi.fn(),
|
|
};
|
|
});
|
|
|
|
vi.mock("@calcom/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler", () => {
|
|
return {
|
|
inviteMembersWithNoInviterPermissionCheck: vi.fn(),
|
|
};
|
|
});
|
|
|
|
describe("moveUserToMatchingOrg", () => {
|
|
const email = "test@example.com";
|
|
|
|
beforeEach(() => {
|
|
vi.resetAllMocks();
|
|
});
|
|
|
|
it("should not proceed if no matching organization is found", async () => {
|
|
organizationScenarios.OrganizationRepository.findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail.fakeNoMatch();
|
|
|
|
await moveUserToMatchingOrg({ email });
|
|
|
|
expect(inviteMembersWithNoInviterPermissionCheck).not.toHaveBeenCalled();
|
|
});
|
|
|
|
describe("should invite user to the matching organization", () => {
|
|
const argToInviteMembersWithNoInviterPermissionCheck = {
|
|
inviterName: null,
|
|
language: "en",
|
|
creationSource: CreationSource.WEBAPP,
|
|
invitations: [
|
|
{
|
|
usernameOrEmail: email,
|
|
role: MembershipRole.MEMBER,
|
|
},
|
|
],
|
|
};
|
|
|
|
it("when organization has a slug and requestedSlug(slug is used)", async () => {
|
|
const org = {
|
|
id: "org123",
|
|
slug: "test-org",
|
|
requestedSlug: "requested-test-org",
|
|
};
|
|
|
|
organizationScenarios.OrganizationRepository.findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail.fakeReturnOrganization(
|
|
org,
|
|
{ email }
|
|
);
|
|
|
|
await moveUserToMatchingOrg({ email });
|
|
|
|
expect(inviteMembersWithNoInviterPermissionCheck).toHaveBeenCalledWith({
|
|
...argToInviteMembersWithNoInviterPermissionCheck,
|
|
teamId: org.id,
|
|
orgSlug: org.slug,
|
|
});
|
|
});
|
|
|
|
it("when organization has requestedSlug only", async () => {
|
|
const org = {
|
|
id: "org123",
|
|
slug: null,
|
|
requestedSlug: "requested-test-org",
|
|
};
|
|
|
|
organizationScenarios.OrganizationRepository.findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail.fakeReturnOrganization(
|
|
org,
|
|
{ email }
|
|
);
|
|
|
|
await moveUserToMatchingOrg({ email });
|
|
|
|
expect(inviteMembersWithNoInviterPermissionCheck).toHaveBeenCalledWith({
|
|
...argToInviteMembersWithNoInviterPermissionCheck,
|
|
teamId: org.id,
|
|
orgSlug: org.requestedSlug,
|
|
});
|
|
});
|
|
});
|
|
});
|