Skip to content

Commit b76b537

Browse files
authored
chore(packages): remove loadedConfig option (#3478)
1 parent 8eb58a2 commit b76b537

File tree

6 files changed

+27
-108
lines changed

6 files changed

+27
-108
lines changed

packages/credential-provider-node/src/defaultProvider.spec.ts

-20
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ describe(defaultProvider.name, () => {
2727

2828
const mockInit = {
2929
profile: "mockProfile",
30-
loadedConfig: Promise.resolve({ configFile: {}, credentialsFile: {} }),
3130
};
3231

3332
const mockEnvFn = jest.fn();
@@ -113,25 +112,6 @@ describe(defaultProvider.name, () => {
113112

114113
process.env = ORIGINAL_ENV;
115114
});
116-
117-
it(`gets loadedConfig from loadSharedConfigFiles, if not provided in init`, async () => {
118-
const mockSharedConfigFiles = Promise.resolve({
119-
configFile: { key: "value" },
120-
credentialsFile: { key: "value" },
121-
});
122-
(loadSharedConfigFiles as jest.Mock).mockReturnValue(mockSharedConfigFiles);
123-
124-
const { loadedConfig, ...mockInitWithoutLoadedConfig } = mockInit;
125-
const receivedCreds = await defaultProvider(mockInitWithoutLoadedConfig)();
126-
expect(receivedCreds).toStrictEqual(mockCreds);
127-
128-
expect(loadSharedConfigFiles).toHaveBeenCalledWith(mockInitWithoutLoadedConfig);
129-
130-
expect(fromEnv).not.toHaveBeenCalled();
131-
for (const fromFn of [fromSSO, fromIni, fromProcess, fromTokenFile, remoteProvider]) {
132-
expect(fromFn).toHaveBeenCalledWith({ ...mockInit, loadedConfig: mockSharedConfigFiles });
133-
}
134-
});
135115
});
136116

137117
it(`adds fromEnv call if profile is not available`, async () => {

packages/credential-provider-node/src/defaultProvider.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { fromProcess, FromProcessInit } from "@aws-sdk/credential-provider-proce
55
import { fromSSO, FromSSOInit } from "@aws-sdk/credential-provider-sso";
66
import { fromTokenFile, FromTokenFileInit } from "@aws-sdk/credential-provider-web-identity";
77
import { chain, CredentialsProviderError, memoize } from "@aws-sdk/property-provider";
8-
import { ENV_PROFILE, loadSharedConfigFiles } from "@aws-sdk/shared-ini-file-loader";
8+
import { ENV_PROFILE } from "@aws-sdk/shared-ini-file-loader";
99
import { Credentials, MemoizedProvider } from "@aws-sdk/types";
1010

1111
import { remoteProvider } from "./remoteProvider";
@@ -50,7 +50,6 @@ export const defaultProvider = (
5050
const options = {
5151
profile: process.env[ENV_PROFILE],
5252
...init,
53-
...(!init.loadedConfig && { loadedConfig: loadSharedConfigFiles(init) }),
5453
};
5554

5655
const providerChain = chain(

packages/node-config-provider/src/fromSharedConfigFiles.spec.ts

+20-47
Original file line numberDiff line numberDiff line change
@@ -115,59 +115,29 @@ describe("fromSharedConfigFiles", () => {
115115
},
116116
];
117117

118-
describe("uses the shared ini file loader if pre-loaded config is not supplied", () => {
119-
loadedConfigResolves.forEach(
120-
({ message, iniDataInConfig, iniDataInCredentials, configValueToVerify, profile, preferredFile }) => {
121-
it(message, () => {
122-
(loadSharedConfigFiles as jest.Mock).mockResolvedValueOnce({
123-
configFile: iniDataInConfig,
124-
credentialsFile: iniDataInCredentials,
125-
});
126-
return expect(fromSharedConfigFiles(configGetter, { profile, preferredFile })()).resolves.toBe(
127-
configValueToVerify
128-
);
129-
});
130-
}
131-
);
132-
133-
loadedConfigRejects.forEach(({ message, iniDataInConfig, iniDataInCredentials, profile, preferredFile }) => {
118+
loadedConfigResolves.forEach(
119+
({ message, iniDataInConfig, iniDataInCredentials, configValueToVerify, profile, preferredFile }) => {
134120
it(message, () => {
135121
(loadSharedConfigFiles as jest.Mock).mockResolvedValueOnce({
136122
configFile: iniDataInConfig,
137123
credentialsFile: iniDataInCredentials,
138124
});
139-
return expect(fromSharedConfigFiles(configGetter, { profile, preferredFile })()).rejects.toMatchObject(
140-
getCredentialsProviderError(profile ?? "default", configGetter)
125+
return expect(fromSharedConfigFiles(configGetter, { profile, preferredFile })()).resolves.toBe(
126+
configValueToVerify
141127
);
142128
});
143-
});
144-
});
145-
146-
describe("uses pre-loaded config if supplied", () => {
147-
loadedConfigResolves.forEach(
148-
({ message, iniDataInConfig, iniDataInCredentials, configValueToVerify, profile, preferredFile }) => {
149-
it(`${message} from config file`, () => {
150-
const loadedConfig = Promise.resolve({
151-
configFile: iniDataInConfig,
152-
credentialsFile: iniDataInCredentials,
153-
});
154-
return expect(
155-
fromSharedConfigFiles(configGetter, { loadedConfig, profile, preferredFile })()
156-
).resolves.toBe(configValueToVerify);
157-
});
158-
}
159-
);
129+
}
130+
);
160131

161-
loadedConfigRejects.forEach(({ message, iniDataInConfig, iniDataInCredentials, profile, preferredFile }) => {
162-
it(message, () => {
163-
const loadedConfig = Promise.resolve({
164-
configFile: iniDataInConfig,
165-
credentialsFile: iniDataInCredentials,
166-
});
167-
return expect(
168-
fromSharedConfigFiles(configGetter, { loadedConfig, profile, preferredFile })()
169-
).rejects.toMatchObject(getCredentialsProviderError(profile ?? "default", configGetter));
132+
loadedConfigRejects.forEach(({ message, iniDataInConfig, iniDataInCredentials, profile, preferredFile }) => {
133+
it(message, () => {
134+
(loadSharedConfigFiles as jest.Mock).mockResolvedValueOnce({
135+
configFile: iniDataInConfig,
136+
credentialsFile: iniDataInCredentials,
170137
});
138+
return expect(fromSharedConfigFiles(configGetter, { profile, preferredFile })()).rejects.toMatchObject(
139+
getCredentialsProviderError(profile ?? "default", configGetter)
140+
);
171141
});
172142
});
173143

@@ -194,19 +164,22 @@ describe("fromSharedConfigFiles", () => {
194164
default: { [configKey]: "credentialsFileDefault" },
195165
},
196166
};
197-
const loadedConfig = Promise.resolve(loadedConfigData);
198167

199168
describe("when profile is not defined", () => {
169+
beforeEach(() => {
170+
(loadSharedConfigFiles as jest.Mock).mockResolvedValueOnce(loadedConfigData);
171+
});
172+
200173
it(`returns configValue from value in '${ENV_PROFILE}' env var if it is set`, () => {
201174
const profile = "foo";
202175
process.env[ENV_PROFILE] = profile;
203-
return expect(fromSharedConfigFiles(configGetter, { loadedConfig })()).resolves.toBe(
176+
return expect(fromSharedConfigFiles(configGetter)()).resolves.toBe(
204177
loadedConfigData.configFile[profile][configKey]
205178
);
206179
});
207180

208181
it(`returns configValue from default profile if '${ENV_PROFILE}' env var is not set`, () => {
209-
return expect(fromSharedConfigFiles(configGetter, { loadedConfig })()).resolves.toBe(
182+
return expect(fromSharedConfigFiles(configGetter)()).resolves.toBe(
210183
loadedConfigData.configFile.default[configKey]
211184
);
212185
});

packages/node-config-provider/src/fromSharedConfigFiles.ts

+3-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { CredentialsProviderError } from "@aws-sdk/property-provider";
22
import { loadSharedConfigFiles, SharedConfigInit as BaseSharedConfigInit } from "@aws-sdk/shared-ini-file-loader";
3-
import { Profile, Provider, SharedConfigFiles } from "@aws-sdk/types";
3+
import { Profile, Provider } from "@aws-sdk/types";
44

55
const DEFAULT_PROFILE = "default";
66
export const ENV_PROFILE = "AWS_PROFILE";
@@ -17,14 +17,6 @@ export interface SharedConfigInit extends BaseSharedConfigInit {
1717
* refers to the shared credentials file(defaults to `~/.aws/credentials`)
1818
*/
1919
preferredFile?: "config" | "credentials";
20-
21-
/**
22-
* A promise that will be resolved with loaded and parsed credentials files.
23-
* Used to avoid loading shared config files multiple times.
24-
*
25-
* @internal
26-
*/
27-
loadedConfig?: Promise<SharedConfigFiles>;
2820
}
2921

3022
export type GetterFromConfig<T> = (profile: Profile) => T | undefined;
@@ -38,9 +30,9 @@ export const fromSharedConfigFiles =
3830
{ preferredFile = "config", ...init }: SharedConfigInit = {}
3931
): Provider<T> =>
4032
async () => {
41-
const { loadedConfig = loadSharedConfigFiles(init), profile = process.env[ENV_PROFILE] || DEFAULT_PROFILE } = init;
33+
const { profile = process.env[ENV_PROFILE] || DEFAULT_PROFILE } = init;
4234

43-
const { configFile, credentialsFile } = await loadedConfig;
35+
const { configFile, credentialsFile } = await loadSharedConfigFiles(init);
4436

4537
const profileFromCredentials = credentialsFile[profile] || {};
4638
const profileFromConfig = configFile[profile] || {};

packages/shared-ini-file-loader/src/parseKnownFiles.spec.ts

+1-16
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,7 @@ describe(parseKnownFiles.name, () => {
1717
jest.clearAllMocks();
1818
});
1919

20-
it("gets parsedFiles from loadedConfig if provided in init", async () => {
21-
const parsedFiles = await parseKnownFiles({
22-
loadedConfig: Promise.resolve({
23-
configFile: mockConfigFile,
24-
credentialsFile: mockCredentialsFile,
25-
}),
26-
});
27-
28-
expect(loadSharedConfigFiles).not.toHaveBeenCalled();
29-
expect(parsedFiles).toEqual({
30-
...mockConfigFile,
31-
...mockCredentialsFile,
32-
});
33-
});
34-
35-
it("gets parsedFiles from loadSharedConfigFiles if not provided in init", async () => {
20+
it("gets parsedFiles from loadSharedConfigFiles", async () => {
3621
(loadSharedConfigFiles as jest.Mock).mockReturnValue(
3722
Promise.resolve({
3823
configFile: mockConfigFile,

packages/shared-ini-file-loader/src/parseKnownFiles.ts

+2-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ParsedIniData, SharedConfigFiles } from "@aws-sdk/types";
1+
import { ParsedIniData } from "@aws-sdk/types";
22

33
import { loadSharedConfigFiles, SharedConfigInit } from "./loadSharedConfigFiles";
44

@@ -7,14 +7,6 @@ export interface SourceProfileInit extends SharedConfigInit {
77
* The configuration profile to use.
88
*/
99
profile?: string;
10-
11-
/**
12-
* A promise that will be resolved with loaded and parsed credentials files.
13-
* Used to avoid loading shared config files multiple times.
14-
*
15-
* @internal
16-
*/
17-
loadedConfig?: Promise<SharedConfigFiles>;
1810
}
1911

2012
/**
@@ -24,9 +16,7 @@ export interface SourceProfileInit extends SharedConfigInit {
2416
* @internal
2517
*/
2618
export const parseKnownFiles = async (init: SourceProfileInit): Promise<ParsedIniData> => {
27-
const { loadedConfig = loadSharedConfigFiles(init) } = init;
28-
29-
const parsedFiles = await loadedConfig;
19+
const parsedFiles = await loadSharedConfigFiles(init);
3020
return {
3121
...parsedFiles.configFile,
3222
...parsedFiles.credentialsFile,

0 commit comments

Comments
 (0)