MCPcopy
hub / github.com/dubinc/dub / assertQstashMessage

Function assertQstashMessage

apps/web/tests/webhooks/index.test.ts:118–147  ·  view source on GitHub ↗
(
  messageId: string,
  body: any,
  trigger: WebhookTrigger,
)

Source from the content-addressed store, hash-verified

116};
117
118const assertQstashMessage = async (
119 messageId: string,
120 body: any,
121 trigger: WebhookTrigger,
122) => {
123 const qstashMessage = await qstash.messages.get(messageId);
124
125 const callbackUrl = new URL(qstashMessage.callback!);
126 const failureCallbackUrl = new URL(qstashMessage.failureCallback!);
127 const receivedBody = JSON.parse(qstashMessage.body!);
128
129 expect(qstashMessage.url).toEqual(webhook.url);
130 expect(qstashMessage.method).toEqual("POST");
131
132 expect(callbackUrl.searchParams.get("webhookId")).toEqual(webhook.id);
133 expect(callbackUrl.searchParams.get("event")).toEqual(trigger);
134 expect(callbackUrl.searchParams.get("eventId")?.startsWith("evt_")).toBe(
135 true,
136 );
137
138 expect(failureCallbackUrl.searchParams.get("webhookId")).toEqual(webhook.id);
139 expect(failureCallbackUrl.searchParams.get("event")).toEqual(trigger);
140 expect(
141 failureCallbackUrl.searchParams.get("eventId")?.startsWith("evt_"),
142 ).toBe(true);
143
144 expect(receivedBody.event).toEqual(trigger);
145 expect(receivedBody.data).toEqual(body);
146 expect(eventSchemas[trigger].safeParse(receivedBody.data).success).toBe(true);
147};
148
149// TODO:
150// Assert the signature is correct

Callers 1

testWebhookEventFunction · 0.85

Calls 1

getMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…