fix: 🐛 Fix bug setting all requests to have an empty body

This commit is contained in:
Jesse Wierzbinski 2024-05-16 23:05:58 -10:00
parent 6560c88b78
commit d117cc9455
No known key found for this signature in database
2 changed files with 17 additions and 2 deletions

View file

@ -180,5 +180,20 @@ describe("SignatureConstructor", () => {
); );
expect(parts[3].split("=")[1]).toBeString(); expect(parts[3].split("=")[1]).toBeString();
}); });
test("should correctly sign a Request", async () => {
const url = new URL("https://example.com");
const request = new Request(url.toString(), {
method: "GET",
body: body,
});
const newRequest = await ctor.sign(request);
headers = newRequest.headers;
expect(headers.get("Signature")).toBeDefined();
expect(headers.get("Date")).toBeDefined();
expect(await newRequest.text()).toBe(body);
});
}); });
}); });

View file

@ -266,6 +266,8 @@ export class SignatureConstructor {
headers: Headers = new Headers(), headers: Headers = new Headers(),
): Promise<Request | Headers> { ): Promise<Request | Headers> {
if (requestOrMethod instanceof Request) { if (requestOrMethod instanceof Request) {
const request = requestOrMethod.clone();
const headers = await this.sign( const headers = await this.sign(
requestOrMethod.method as HttpVerb, requestOrMethod.method as HttpVerb,
new URL(requestOrMethod.url), new URL(requestOrMethod.url),
@ -273,8 +275,6 @@ export class SignatureConstructor {
requestOrMethod.headers, requestOrMethod.headers,
); );
const request = requestOrMethod.clone();
request.headers.set("Date", headers.get("Date") ?? ""); request.headers.set("Date", headers.get("Date") ?? "");
request.headers.set("Signature", headers.get("Signature") ?? ""); request.headers.set("Signature", headers.get("Signature") ?? "");