saleor-app-sdk-REDIS_APL/src/middleware/with-base-url.test.ts
Michał Miszczyszyn 5057d3491e
Support comma-delimited x-forwarded-proto (#227)
* Support comma-delimited x-forwarded-proto

* Changeset
2023-04-11 15:03:50 +02:00

62 lines
1.9 KiB
TypeScript

import { Handler, Request } from "retes";
import { Response } from "retes/response";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { withBaseURL } from "./with-base-url";
const getMockEmptyResponse = async () => ({} as Response);
describe("middleware", () => {
describe("withBaseURL", () => {
let mockHandlerFn: Handler = vi.fn(getMockEmptyResponse);
beforeEach(() => {
mockHandlerFn = vi.fn();
});
it("Adds base URL from request header to context and calls handler", async () => {
const mockRequest = {
context: {},
headers: {
host: "my-saleor-env.saleor.cloud",
"x-forwarded-proto": "https",
},
} as unknown as Request;
await withBaseURL(mockHandlerFn)(mockRequest);
expect(mockRequest.context.baseURL).toBe("https://my-saleor-env.saleor.cloud");
expect(mockHandlerFn).toHaveBeenCalledOnce();
});
it("supports multiple comma-delimited values in x-forwarded-proto", async () => {
const mockRequest = {
context: {},
headers: {
host: "my-saleor-env.saleor.cloud",
"x-forwarded-proto": "https,http",
},
} as unknown as Request;
await withBaseURL(mockHandlerFn)(mockRequest);
expect(mockRequest.context.baseURL).toBe("https://my-saleor-env.saleor.cloud");
expect(mockHandlerFn).toHaveBeenCalledOnce();
});
it("supports multiple x-forwarded-proto headers", async () => {
const mockRequest = {
context: {},
headers: {
host: "my-saleor-env.saleor.cloud",
"x-forwarded-proto": ["http", "ftp,https"],
},
} as unknown as Request;
await withBaseURL(mockHandlerFn)(mockRequest);
expect(mockRequest.context.baseURL).toBe("https://my-saleor-env.saleor.cloud");
expect(mockHandlerFn).toHaveBeenCalledOnce();
});
});
});