Skip to content

Commit

Permalink
fix(platform-serverless): fix .headers undefined error when event is …
Browse files Browse the repository at this point in the history
…a SQS event

Closes: #2746
  • Loading branch information
Romakita committed Jul 8, 2024
1 parent 749c938 commit 2262e26
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
@@ -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<typeof createFakeEvent>[0];
context?: Parameters<typeof createFakeContext>[0];
}) {
const context: any = createFakeContext(initialContext);
const event: any = createFakeEvent(initialEvent);

return new ServerlessContext({
event,
Expand Down

0 comments on commit 2262e26

Please sign in to comment.