11import { CredentialsProviderError } from "@smithy/property-provider" ;
2- import { afterAll , beforeEach , describe , expect , test as it , vi } from "vitest" ;
2+ import { afterAll , afterEach , beforeEach , describe , expect , test as it , vi } from "vitest" ;
33
4- import { fromEnv , GetterFromEnv } from "./fromEnv" ;
4+ import { fromEnv } from "./fromEnv" ;
55
66describe ( "fromEnv" , ( ) => {
77 describe ( "with env var getter" , ( ) => {
88 const ENV_VAR_NAME = "ENV_VAR_NAME" ;
99
10- // Using Record<string, string | undefined> instead of NodeJS.ProcessEnv, in order to not get type errors in non node environments
11- const envVarGetter : GetterFromEnv < string > = ( env : Record < string , string | undefined > ) => env [ ENV_VAR_NAME ] ! ;
10+ const envVarGetter = vi . fn ( ) ;
1211 const envVarValue = process . env [ ENV_VAR_NAME ] ;
1312 const mockEnvVarValue = "mockEnvVarValue" ;
1413
1514 beforeEach ( ( ) => {
15+ envVarGetter . mockImplementation ( ( env : Record < string , string > ) => {
16+ if ( env [ ENV_VAR_NAME ] ) return env [ ENV_VAR_NAME ] ;
17+ throw new CredentialsProviderError ( `Not found in ENV: ${ ENV_VAR_NAME } ` ) ;
18+ } ) ;
1619 delete process . env [ ENV_VAR_NAME ] ;
1720 } ) ;
1821
22+ afterEach ( ( ) => {
23+ vi . clearAllMocks ( ) ;
24+ } ) ;
25+
1926 afterAll ( ( ) => {
2027 process . env [ ENV_VAR_NAME ] = envVarValue ;
2128 } ) ;
@@ -27,9 +34,17 @@ describe("fromEnv", () => {
2734 } ) ;
2835 } ) ;
2936
30- it ( `returns string value in '${ ENV_VAR_NAME } ' env var when set` , ( ) => {
37+ it ( `returns string value in '${ ENV_VAR_NAME } ' env var when set` , async ( ) => {
38+ process . env [ ENV_VAR_NAME ] = mockEnvVarValue ;
39+ await expect ( fromEnv ( envVarGetter ) ( ) ) . resolves . toBe ( mockEnvVarValue ) ;
40+ expect ( envVarGetter ) . toHaveBeenCalledWith ( process . env , undefined ) ;
41+ } ) ;
42+
43+ it ( `passes options to envVarSelector if it's set` , async ( ) => {
3144 process . env [ ENV_VAR_NAME ] = mockEnvVarValue ;
32- return expect ( fromEnv ( envVarGetter ) ( ) ) . resolves . toBe ( mockEnvVarValue ) ;
45+ const options = { signingName : "signingName" } ;
46+ await expect ( fromEnv ( envVarGetter , options ) ( ) ) . resolves . toBe ( mockEnvVarValue ) ;
47+ expect ( envVarGetter ) . toHaveBeenCalledWith ( process . env , options ) ;
3348 } ) ;
3449
3550 it ( "return complex value from the getter" , ( ) => {
0 commit comments