Skip to content

Commit

Permalink
test(credential-providers): add unit test fromTempCreds
Browse files Browse the repository at this point in the history
  • Loading branch information
kuhe committed Jan 22, 2025
1 parent 858c3a4 commit dc94fd5
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ export const fromTemporaryCredentials = (
throw new Error("fromTemporaryCredentials recursion in callerClientConfig.credentials");
} else if (credentialSources[3]) {
credentialSource = "caller client's credentialDefaultProvider";
} else if (credentialSources[4]) {
credentialSource = "AWS SDK default credentials";
}

const regionSources = [options.clientConfig?.region, callerClientConfig?.region, ASSUME_ROLE_DEFAULT_REGION];
Expand Down
42 changes: 42 additions & 0 deletions packages/credential-providers/src/fromTemporaryCredentials.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ describe("fromTemporaryCredentials", () => {
await provider();
expect(vi.mocked(STSClient as any)).toHaveBeenCalledWith({
credentials: masterCredentials,
logger: void 0,
profile: void 0,
region: "us-east-1",
requestHandler: void 0,
});
expect(mockUsePlugin).toHaveBeenCalledTimes(1);
expect(mockUsePlugin).toHaveBeenNthCalledWith(1, plugin);
Expand Down Expand Up @@ -193,6 +197,44 @@ describe("fromTemporaryCredentials", () => {
});
});

it("uses caller client options if not overridden with provider client options", async () => {
const provider = fromTemporaryCredentialsNode({
params: {
RoleArn,
RoleSessionName,
},
});
const logger = {
debug: console.debug,
info() {},
warn() {},
error() {},
};
const credentials = {
accessKeyId: "",
secretAccessKey: "",
};
const credentialProvider = async () => credentials;
const regionProvider = async () => "B";
await provider({
callerClientConfig: {
profile: "A",
region: regionProvider,
logger,
requestHandler: Symbol.for("requestHandler") as any,
credentialDefaultProvider: () => credentialProvider,
},
});
expect(vi.mocked(STSClient as any).mock.calls[0][0]).toEqual({
profile: "A",
region: regionProvider,
logger,
requestHandler: Symbol.for("requestHandler") as any,
// mockImpl resolved the credentials.
credentials,
});
});

it("should allow assume roles assuming roles assuming roles ad infinitum", async () => {
const roleArnOf = (id: string) => `arn:aws:iam::123456789:role/${id}`;
const idOf = (roleArn: string) => roleArn.split("/")?.[1] ?? "UNKNOWN";
Expand Down

0 comments on commit dc94fd5

Please sign in to comment.