Skip to content

Commit 9c40e04

Browse files
authored
chore(node-config-provider): get profile name from getProfileName (#3479)
1 parent b76b537 commit 9c40e04

File tree

2 files changed

+19
-34
lines changed

2 files changed

+19
-34
lines changed

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

+13-28
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,18 @@
11
import { CredentialsProviderError } from "@aws-sdk/property-provider";
2-
import { loadSharedConfigFiles } from "@aws-sdk/shared-ini-file-loader";
2+
import { getProfileName, loadSharedConfigFiles } from "@aws-sdk/shared-ini-file-loader";
33
import { ParsedIniData, Profile } from "@aws-sdk/types";
44

5-
import { ENV_PROFILE, fromSharedConfigFiles, GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles";
5+
import { fromSharedConfigFiles, GetterFromConfig, SharedConfigInit } from "./fromSharedConfigFiles";
66

77
jest.mock("@aws-sdk/shared-ini-file-loader", () => ({
8+
getProfileName: jest.fn(),
89
loadSharedConfigFiles: jest.fn(),
910
}));
1011

1112
describe("fromSharedConfigFiles", () => {
12-
const envProfile = process.env[ENV_PROFILE];
1313
const configKey = "config_key";
1414
const configGetter: GetterFromConfig<string> = (profile: Profile) => profile[configKey];
1515

16-
beforeEach(() => {
17-
delete process.env[ENV_PROFILE];
18-
});
19-
20-
afterAll(() => {
21-
process.env[ENV_PROFILE] = envProfile;
22-
});
23-
2416
const getCredentialsProviderError = (profile: string, getter: GetterFromConfig<string>) =>
2517
new CredentialsProviderError(
2618
`Cannot load config for profile ${profile} in SDK configuration files with getter: ${getter}`
@@ -122,6 +114,7 @@ describe("fromSharedConfigFiles", () => {
122114
configFile: iniDataInConfig,
123115
credentialsFile: iniDataInCredentials,
124116
});
117+
(getProfileName as jest.Mock).mockReturnValueOnce(profile ?? "default");
125118
return expect(fromSharedConfigFiles(configGetter, { profile, preferredFile })()).resolves.toBe(
126119
configValueToVerify
127120
);
@@ -135,6 +128,7 @@ describe("fromSharedConfigFiles", () => {
135128
configFile: iniDataInConfig,
136129
credentialsFile: iniDataInCredentials,
137130
});
131+
(getProfileName as jest.Mock).mockReturnValueOnce(profile ?? "default");
138132
return expect(fromSharedConfigFiles(configGetter, { profile, preferredFile })()).rejects.toMatchObject(
139133
getCredentialsProviderError(profile ?? "default", configGetter)
140134
);
@@ -165,24 +159,15 @@ describe("fromSharedConfigFiles", () => {
165159
},
166160
};
167161

168-
describe("when profile is not defined", () => {
169-
beforeEach(() => {
170-
(loadSharedConfigFiles as jest.Mock).mockResolvedValueOnce(loadedConfigData);
171-
});
172-
173-
it(`returns configValue from value in '${ENV_PROFILE}' env var if it is set`, () => {
174-
const profile = "foo";
175-
process.env[ENV_PROFILE] = profile;
176-
return expect(fromSharedConfigFiles(configGetter)()).resolves.toBe(
177-
loadedConfigData.configFile[profile][configKey]
178-
);
179-
});
162+
beforeEach(() => {
163+
(loadSharedConfigFiles as jest.Mock).mockResolvedValueOnce(loadedConfigData);
164+
});
180165

181-
it(`returns configValue from default profile if '${ENV_PROFILE}' env var is not set`, () => {
182-
return expect(fromSharedConfigFiles(configGetter)()).resolves.toBe(
183-
loadedConfigData.configFile.default[configKey]
184-
);
185-
});
166+
it.each(["foo", "default"])("returns config value from %s profile", (profile) => {
167+
(getProfileName as jest.Mock).mockReturnValueOnce(profile);
168+
return expect(fromSharedConfigFiles(configGetter)()).resolves.toBe(
169+
loadedConfigData.configFile[profile][configKey]
170+
);
186171
});
187172
});
188173
});

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

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { CredentialsProviderError } from "@aws-sdk/property-provider";
2-
import { loadSharedConfigFiles, SharedConfigInit as BaseSharedConfigInit } from "@aws-sdk/shared-ini-file-loader";
2+
import {
3+
getProfileName,
4+
loadSharedConfigFiles,
5+
SharedConfigInit as BaseSharedConfigInit,
6+
} from "@aws-sdk/shared-ini-file-loader";
37
import { Profile, Provider } from "@aws-sdk/types";
48

5-
const DEFAULT_PROFILE = "default";
6-
export const ENV_PROFILE = "AWS_PROFILE";
7-
89
export interface SharedConfigInit extends BaseSharedConfigInit {
910
/**
1011
* The configuration profile to use.
@@ -30,8 +31,7 @@ export const fromSharedConfigFiles =
3031
{ preferredFile = "config", ...init }: SharedConfigInit = {}
3132
): Provider<T> =>
3233
async () => {
33-
const { profile = process.env[ENV_PROFILE] || DEFAULT_PROFILE } = init;
34-
34+
const profile = getProfileName(init);
3535
const { configFile, credentialsFile } = await loadSharedConfigFiles(init);
3636

3737
const profileFromCredentials = credentialsFile[profile] || {};

0 commit comments

Comments
 (0)