From 8c4782d2c3bee2115dc5eaa2a32ba9f5708fbe8d Mon Sep 17 00:00:00 2001 From: James Bourne Date: Tue, 12 Mar 2024 21:15:28 +0100 Subject: [PATCH] fix: allow using baseURL with empty url (#1305) --- src/interceptor.test.ts | 47 +++++++++++++++++++++++++++++++++++++++++ src/interceptor.ts | 2 +- 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/interceptor.test.ts b/src/interceptor.test.ts index 8967c87f..178109a2 100644 --- a/src/interceptor.test.ts +++ b/src/interceptor.test.ts @@ -501,4 +501,51 @@ describe("credentials", () => { } ); }); + + it("allows empty URL when baseURL is set", async () => { + // Arrange + const request: InternalAxiosRequestConfig = { + method: "GET", + url: "", + headers: getDefaultHeaders(), + transformRequest: getDefaultTransformRequest(), + }; + + const client = axios.create({ + baseURL: "https://example.com", + }); + + const interceptor = aws4Interceptor({ + options: { + region: "local", + service: "execute-api", + assumeRoleArn: "arn:aws:iam::111111111111:role/MockRole", + }, + credentials: { + accessKeyId: "access-key-id", + secretAccessKey: "secret-access-key", + sessionToken: "session-token", + }, + instance: client, + }); + + // Act + await expect(interceptor(request)).resolves.toBeDefined(); + expect(sign).toBeCalledWith( + { + service: "execute-api", + path: "/", + method: "GET", + region: "local", + host: "example.com", + headers: {}, + signQuery: undefined, + }, + { + accessKeyId: "access-key-id", + secretAccessKey: "secret-access-key", + sessionToken: "session-token", + } + ); + }); }); diff --git a/src/interceptor.ts b/src/interceptor.ts index 9ba891e3..c3eac619 100644 --- a/src/interceptor.ts +++ b/src/interceptor.ts @@ -123,7 +123,7 @@ export const aws4Interceptor = ({ return async (config) => { const url = instance.getUri(config); - if (!config.url) { + if (!url) { throw new Error( "No URL present in request config, unable to sign request" );