first commit
This commit is contained in:
73
calcom/packages/features/webhooks/lib/test/webhooks.test.ts
Normal file
73
calcom/packages/features/webhooks/lib/test/webhooks.test.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import prismock from "../../../../../tests/libs/__mocks__/prisma";
|
||||
|
||||
import { expectWebhookToHaveBeenCalledWith } from "@calcom/web/test/utils/bookingScenario/expects";
|
||||
|
||||
import { describe, expect, beforeEach } from "vitest";
|
||||
|
||||
import dayjs from "@calcom/dayjs";
|
||||
import { test } from "@calcom/web/test/fixtures/fixtures";
|
||||
|
||||
import { handleWebhookScheduledTriggers } from "../handleWebhookScheduledTriggers";
|
||||
|
||||
describe("Cron job handler", () => {
|
||||
beforeEach(async () => {
|
||||
await prismock.webhookScheduledTriggers.deleteMany();
|
||||
});
|
||||
test(`should delete old webhook scheduled triggers`, async () => {
|
||||
const now = dayjs();
|
||||
await prismock.webhookScheduledTriggers.createMany({
|
||||
data: [
|
||||
{
|
||||
id: 1,
|
||||
subscriberUrl: "https://example.com",
|
||||
startAfter: now.subtract(2, "day").toDate(),
|
||||
payload: "",
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
subscriberUrl: "https://example.com",
|
||||
startAfter: now.subtract(1, "day").subtract(1, "hour").toDate(),
|
||||
payload: "",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
subscriberUrl: "https://example.com",
|
||||
startAfter: now.add(1, "day").toDate(),
|
||||
payload: "",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
await handleWebhookScheduledTriggers(prismock);
|
||||
|
||||
const scheduledTriggers = await prismock.webhookScheduledTriggers.findMany();
|
||||
expect(scheduledTriggers.length).toBe(1);
|
||||
expect(scheduledTriggers[0].startAfter).toStrictEqual(now.add(1, "day").toDate());
|
||||
});
|
||||
test(`should trigger if current date is after startAfter`, async () => {
|
||||
const now = dayjs();
|
||||
const payload = `{"triggerEvent":"MEETING_ENDED"}`;
|
||||
await prismock.webhookScheduledTriggers.createMany({
|
||||
data: [
|
||||
{
|
||||
id: 1,
|
||||
subscriberUrl: "https://example.com",
|
||||
startAfter: now.add(5, "minute").toDate(),
|
||||
payload,
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
subscriberUrl: "https://example.com/test",
|
||||
startAfter: now.subtract(5, "minute").toDate(),
|
||||
payload,
|
||||
},
|
||||
],
|
||||
});
|
||||
await handleWebhookScheduledTriggers(prismock);
|
||||
|
||||
expectWebhookToHaveBeenCalledWith("https://example.com/test", { triggerEvent: "MEETING_ENDED", payload });
|
||||
expect(() =>
|
||||
expectWebhookToHaveBeenCalledWith("https://example.com", { triggerEvent: "MEETING_ENDED", payload })
|
||||
).toThrow("Webhook not sent to https://example.com for MEETING_ENDED. All webhooks: []");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user