From dcfa8bb3a5f762f0ab42d9ca1ade631665073177 Mon Sep 17 00:00:00 2001 From: Dylan Lamont Date: Sat, 27 Apr 2024 23:51:04 +1000 Subject: [PATCH] fix: reverts conditional change within `getPayload()` that broke compatibility with fastify/middie middleware library --- src/middleware/node/get-payload.ts | 2 +- test/integration/get-payload.test.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/middleware/node/get-payload.ts b/src/middleware/node/get-payload.ts index cb873665..37eb79ad 100644 --- a/src/middleware/node/get-payload.ts +++ b/src/middleware/node/get-payload.ts @@ -12,7 +12,7 @@ import AggregateError from "aggregate-error"; type IncomingMessage = any; export function getPayload(request: IncomingMessage): Promise { - if ("body" in request) { + if (request.body) { if ( typeof request.body === "object" && "rawBody" in request && diff --git a/test/integration/get-payload.test.ts b/test/integration/get-payload.test.ts index 507f4a93..c28aa7e9 100644 --- a/test/integration/get-payload.test.ts +++ b/test/integration/get-payload.test.ts @@ -74,4 +74,19 @@ describe("getPayload", () => { expect(await promise).toEqual("foo"); }); + + it("resolves with a string if the body key of the request is defined but value is undefined", async () => { + const request = new EventEmitter(); + // @ts-ignore body is not part of EventEmitter, which we are using + // to mock the request object + request.body = undefined; + + const promise = getPayload(request); + + // we emit data, to ensure that the body attribute is preferred + request.emit("data", "bar"); + request.emit("end"); + + expect(await promise).toEqual("bar"); + }); });