Skip to content

Commit ae5a045

Browse files
committed
chore: forcerefresh
1 parent 9c00f6d commit ae5a045

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

packages/credential-provider-node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"build:types": "tsc -p tsconfig.types.json",
1616
"build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4",
1717
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
18-
"test": "yarn g:vitest run",
18+
"test": "yarn g:vitest run --reporter verbose",
1919
"test:watch": "yarn g:vitest watch",
2020
"test:integration": "yarn g:vitest run -c vitest.config.integ.mts",
2121
"test:integration:watch": "yarn g:vitest watch -c vitest.config.integ.mts"

packages/credential-provider-node/src/runtime/memoize-chain.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,29 @@ describe("memoize runtime config aware AWS credential chain", () => {
131131
expect(expiringCredentials).toHaveBeenCalledTimes(3);
132132
}
133133
});
134+
135+
it("can be force refreshed", async () => {
136+
const provider = memoizeChain([expiringCredentials], credentialsWillNeedRefresh);
137+
138+
const credentials = await Promise.all([
139+
provider({ forceRefresh: true }),
140+
provider({ forceRefresh: true }),
141+
provider({ forceRefresh: true }),
142+
provider({ forceRefresh: true }),
143+
provider({ forceRefresh: true }),
144+
]);
145+
let sequence = 0;
146+
147+
for (const c of credentials) {
148+
expect(c).toEqual({
149+
accessKeyId: "",
150+
secretAccessKey: "",
151+
expiration,
152+
sequence: sequence++,
153+
runtimeOptions: ["forceRefresh"],
154+
});
155+
}
156+
157+
expect(expiringCredentials).toHaveBeenCalledTimes(5);
158+
});
134159
});

packages/credential-provider-node/src/runtime/memoize-chain.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ export function memoizeChain(
3131
let credentials: AwsCredentialIdentity | undefined;
3232

3333
const provider = async (options?: AwsIdentityProperties & { forceRefresh?: boolean }) => {
34+
if (options?.forceRefresh) {
35+
return await chain(options);
36+
}
3437
if (activeLock) {
3538
await activeLock;
3639
} else if (!credentials || treatAsExpired?.(credentials!)) {

0 commit comments

Comments
 (0)