From 0882c7e408c72bd3af7f59d30377166ea352ac3d Mon Sep 17 00:00:00 2001 From: Krzysztof Wolski Date: Thu, 25 Aug 2022 17:22:53 +0200 Subject: [PATCH] Test withSaleorEventMatch --- src/middleware/with-base-url.test.ts | 2 +- .../with-saleor-event-match.test.ts | 57 +++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/middleware/with-saleor-event-match.test.ts diff --git a/src/middleware/with-base-url.test.ts b/src/middleware/with-base-url.test.ts index a951ccc..5ba4b8f 100644 --- a/src/middleware/with-base-url.test.ts +++ b/src/middleware/with-base-url.test.ts @@ -6,7 +6,7 @@ import { withBaseURL } from "./with-base-url"; const getMockEmptyResponse = async () => ({} as Response); -describe("middleware.test.ts", () => { +describe("middleware", () => { describe("withBaseURL", () => { let mockHandlerFn: Handler = vi.fn(getMockEmptyResponse); diff --git a/src/middleware/with-saleor-event-match.test.ts b/src/middleware/with-saleor-event-match.test.ts new file mode 100644 index 0000000..29eabb2 --- /dev/null +++ b/src/middleware/with-saleor-event-match.test.ts @@ -0,0 +1,57 @@ +import { Handler, Request } from "retes"; +import { Response } from "retes/response"; +import { beforeEach, describe, expect, it, vi } from "vitest"; + +import { SALEOR_EVENT_HEADER } from "../const"; +import { withSaleorEventMatch } from "./with-saleor-event-match"; + +const getMockSuccessResponse = async () => Response.OK({}); + +describe("middleware", () => { + describe("withSaleorEventMatch", () => { + let mockHandlerFn: Handler = vi.fn(getMockSuccessResponse); + + beforeEach(() => { + mockHandlerFn = vi.fn(getMockSuccessResponse); + }); + + it("Pass request when request has expected event header", async () => { + const eventName = "product-updated"; + const mockRequest = { + context: {}, + headers: { + [SALEOR_EVENT_HEADER]: eventName, + }, + } as unknown as Request; + + const response = await withSaleorEventMatch(eventName)(mockHandlerFn)(mockRequest); + + expect(response.status).toBe(200); + expect(mockHandlerFn).toHaveBeenCalledOnce(); + }); + + it("Reject request when event header is not present", async () => { + const mockRequest = { + context: {}, + headers: {}, + } as unknown as Request; + + const response = await withSaleorEventMatch("product-updated")(mockHandlerFn)(mockRequest); + expect(response.status).eq(400); + expect(mockHandlerFn).toBeCalledTimes(0); + }); + + it("Reject request when event header does not match", async () => { + const mockRequest = { + context: {}, + headers: { + [SALEOR_EVENT_HEADER]: "wrong-event", + }, + } as unknown as Request; + + const response = await withSaleorEventMatch("product-updated")(mockHandlerFn)(mockRequest); + expect(response.status).eq(400); + expect(mockHandlerFn).toBeCalledTimes(0); + }); + }); +});