diff --git a/packages/platform/platform-serverless/src/domain/ServerlessContext.spec.ts b/packages/platform/platform-serverless/src/domain/ServerlessContext.spec.ts index 8593e9e8f62..c36034c2a01 100644 --- a/packages/platform/platform-serverless/src/domain/ServerlessContext.spec.ts +++ b/packages/platform/platform-serverless/src/domain/ServerlessContext.spec.ts @@ -41,5 +41,43 @@ describe("ServerlessContext", () => { expect(ctx.request.response).toEqual(ctx.response); expect(ctx.response.request).toEqual(ctx.request); }); + it("should push callback with event headers", () => { + const ctx = createServerlessContext({ + endpoint: {} as any, + event: { + headers: undefined + } + }); + expect(ctx.event).toEqual({ + body: "", + headers: {}, + httpMethod: "", + isBase64Encoded: false, + multiValueHeaders: {}, + multiValueQueryStringParameters: {}, + path: "/", + pathParameters: {}, + queryStringParameters: {}, + requestContext: { + accountId: "", + apiId: "", + httpMethod: "", + identity: {}, + path: "/", + protocol: "https", + requestId: "requestId", + requestTimeEpoch: 0, + resourceId: 1, + resourcePath: "/", + stage: "" + }, + resource: "", + stageVariables: {} + }); + expect(ctx.response.raw).toEqual(ctx.request.raw); + expect(ctx.request.event).toEqual(ctx.response.event); + expect(ctx.request.response).toEqual(ctx.response); + expect(ctx.response.request).toEqual(ctx.request); + }); }); }); diff --git a/packages/platform/platform-serverless/src/domain/ServerlessContext.ts b/packages/platform/platform-serverless/src/domain/ServerlessContext.ts index 9f7e7f1513e..6be522bfd8e 100644 --- a/packages/platform/platform-serverless/src/domain/ServerlessContext.ts +++ b/packages/platform/platform-serverless/src/domain/ServerlessContext.ts @@ -26,7 +26,7 @@ export class ServerlessContext extends DIContext { this.context = context; this.event = { ...event, - headers: Object.fromEntries(Object.entries(event.headers).map(([key, value]) => [key.toLowerCase(), value])) + headers: Object.fromEntries(Object.entries(event.headers || {}).map(([key, value]) => [key.toLowerCase(), value])) }; this.request = new ServerlessRequest(this); this.response = new ServerlessResponse(this); diff --git a/packages/platform/platform-serverless/test/utils/createServerlessContext.ts b/packages/platform/platform-serverless/test/utils/createServerlessContext.ts index 1879ade6908..efb4dfc1fb1 100644 --- a/packages/platform/platform-serverless/test/utils/createServerlessContext.ts +++ b/packages/platform/platform-serverless/test/utils/createServerlessContext.ts @@ -1,11 +1,19 @@ import {JsonEntityStore} from "@tsed/schema"; -import {createFakeContext, createFakeEvent, PlatformServerlessTest} from "@tsed/platform-serverless-testing"; +import {createFakeEvent, createFakeContext, PlatformServerlessTest} from "@tsed/platform-serverless-testing"; import {Logger} from "@tsed/logger"; import {ServerlessContext} from "../../src/domain/ServerlessContext.js"; -export function createServerlessContext({endpoint}: {endpoint: JsonEntityStore}) { - const context: any = createFakeContext(); - const event: any = createFakeEvent(); +export function createServerlessContext({ + endpoint, + event: initialEvent, + context: initialContext +}: { + endpoint: JsonEntityStore; + event?: Parameters[0]; + context?: Parameters[0]; +}) { + const context: any = createFakeContext(initialContext); + const event: any = createFakeEvent(initialEvent); return new ServerlessContext({ event,