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"); + }); });