Skip to content

Commit 6fbfdf2

Browse files
committed
if invalid environment configured, fallback to discovery
1 parent 731def1 commit 6fbfdf2

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

src/environment/EnvironmentDetector.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const environments = [lambdaEnvironment, ec2Environment];
3131

3232
let environment : IEnvironment | undefined = defaultEnvironment;
3333

34-
const getEnvironmentFromOverride = (): IEnvironment => {
34+
const getEnvironmentFromOverride = (): IEnvironment | undefined => {
3535
// short-circuit environment detection and use override
3636
switch (config.environmentOverride) {
3737
case Environments.Agent:
@@ -44,7 +44,7 @@ const getEnvironmentFromOverride = (): IEnvironment => {
4444
return new LocalEnvironment();
4545
case Environments.Unknown:
4646
default:
47-
return defaultEnvironment;
47+
return undefined;
4848
}
4949
}
5050

@@ -70,8 +70,14 @@ const _resolveEnvironment: EnvironmentProvider = async (): Promise<IEnvironment>
7070

7171
if (config.environmentOverride) {
7272
LOG("Environment override supplied", config.environmentOverride);
73-
environment = getEnvironmentFromOverride();
74-
return environment;
73+
// this will be falsy if an invalid configuration value is provided
74+
environment = getEnvironmentFromOverride()
75+
if (environment) {
76+
return environment;
77+
}
78+
else {
79+
LOG('Invalid environment provided. Falling back to auto-discovery.', config.environmentOverride);
80+
}
7581
}
7682

7783
environment = await discoverEnvironment(); // eslint-disable-line require-atomic-updates

src/environment/__tests__/EnvironmentDetector.test.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,17 @@ test('resolveEnvironment() honors configured override', async () => {
3636

3737
// assert
3838
expect(result.constructor.name).toBe('LocalEnvironment');
39+
});
40+
41+
test('resolveEnvironment() ignores invalid override and falls back to discovery', async () => {
42+
// arrange
43+
// @ts-ignore
44+
config.environmentOverride = "Invalid";
45+
process.env.AWS_LAMBDA_FUNCTION_NAME = faker.random.word();
46+
47+
// act
48+
const result = await cleanResolveEnvironment();
49+
50+
// assert
51+
expect(result.constructor.name).toBe('LambdaEnvironment');
3952
});

0 commit comments

Comments
 (0)