* --init * -- * replace old structure with new DI * fix type * -- * moving stuff around * moving stuff around again * minor clean up * -- * resolve conflict * clea up * old schema clean up * further clean up * removing unwanted merged responsibilities * -- * improve DI and SOLID * some type fixes * --1 * clean up --cont * fix DI in facade for test * more fix * fix * checking * o.o * fix import * fix failing test --2 * fix failing test --3 * fix failing test --4 * normalization use * introduce facade container injection * uniform async telemetry spans * further improvements * replace prismock with repo mocks * ensure we don't pass prisma outside of repo * fix import * remove try catch from repo calls * async await fixes * using deps pattern * more clean up and fixes * more clean up * address feedback --1 * separation of concern * clean up * test clean up * feedback --2 * remove extra fetch * remove await * migrate _post test from prismock * fix type * -- * fix tokens path * rename AuditRepo * test --1 * update _post to integration test * fix test * fix test * test fix maybe? * -- * feedback * feedback * fixes * more feedback * NIT * use sentry and logger imports as planned * assertion in test * add missing test case * add tests for controllers and services * NITs * fix domain normalisation
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import type { Mock } from "vitest";
|
|
import { describe, expect, test, vi, afterEach } from "vitest";
|
|
|
|
import { checkIfFreeEmailDomain } from "./checkIfFreeEmailDomain";
|
|
|
|
vi.mock("@calcom/features/di/watchlist/containers/watchlist", () => {
|
|
return {
|
|
getWatchlistFeature: vi.fn().mockReturnValue({
|
|
globalBlocking: {
|
|
isFreeEmailDomain: vi.fn().mockResolvedValue(true),
|
|
},
|
|
}),
|
|
};
|
|
});
|
|
|
|
describe("checkIfFreeEmailDomain", () => {
|
|
test("If gmail should return true", async () => {
|
|
expect(await checkIfFreeEmailDomain({ email: "test@gmail.com" })).toBe(true);
|
|
});
|
|
test("If outlook should return true", async () => {
|
|
expect(await checkIfFreeEmailDomain({ email: "test@outlook.com" })).toBe(true);
|
|
});
|
|
test("If there's no email domain return as if it was a free email domain", async () => {
|
|
expect(await checkIfFreeEmailDomain({ email: "test@" })).toBe(true);
|
|
});
|
|
test("If free email domain in watchlist, should return true", async () => {
|
|
const { getWatchlistFeature } = await import("@calcom/features/di/watchlist/containers/watchlist");
|
|
const getWatchlistFeatureMock = getWatchlistFeature as Mock;
|
|
|
|
const result = await checkIfFreeEmailDomain({ email: "test@freedomain.com" });
|
|
|
|
expect(getWatchlistFeatureMock).toHaveBeenCalled();
|
|
|
|
const mockInstance = getWatchlistFeatureMock.mock.results.at(-1)?.value;
|
|
|
|
expect(mockInstance.globalBlocking.isFreeEmailDomain).toHaveBeenCalledWith("freedomain.com");
|
|
expect(result).toBe(true);
|
|
});
|
|
|
|
test("If non-free email domain, should return false", async () => {
|
|
const { getWatchlistFeature } = await import("@calcom/features/di/watchlist/containers/watchlist");
|
|
const getWatchlistFeatureMock = getWatchlistFeature as Mock;
|
|
|
|
getWatchlistFeatureMock.mockReturnValueOnce({
|
|
globalBlocking: {
|
|
isFreeEmailDomain: vi.fn().mockResolvedValue(false),
|
|
},
|
|
});
|
|
|
|
const result = await checkIfFreeEmailDomain({ email: "test@corporatedomain.com" });
|
|
|
|
expect(getWatchlistFeatureMock).toHaveBeenCalled();
|
|
|
|
const mockInstance = getWatchlistFeatureMock.mock.results.at(-1)?.value;
|
|
|
|
expect(mockInstance.globalBlocking.isFreeEmailDomain).toHaveBeenCalledWith("corporatedomain.com");
|
|
expect(result).toBe(false);
|
|
});
|
|
|
|
afterEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
});
|