@@ -20,6 +20,8 @@ import {
20
20
} from '../../../../src/client-side-encryption/providers/azure' ;
21
21
// eslint-disable-next-line @typescript-eslint/no-restricted-imports
22
22
import * as utils from '../../../../src/client-side-encryption/providers/utils' ;
23
+ // eslint-disable-next-line @typescript-eslint/no-restricted-imports
24
+ import { AWSSDKCredentialProvider } from '../../../../src/cmap/auth/aws_temporary_credentials' ;
23
25
import * as requirements from '../requirements.helper' ;
24
26
25
27
const originalAccessKeyId = process . env . AWS_ACCESS_KEY_ID ;
@@ -175,6 +177,29 @@ describe('#refreshKMSCredentials', function () {
175
177
expect ( providers ) . to . deep . equal ( kmsProviders ) ;
176
178
} ) ;
177
179
} ) ;
180
+
181
+ context ( 'when the AWS SDK returns unknown fields' , function ( ) {
182
+ beforeEach ( ( ) => {
183
+ sinon . stub ( AWSSDKCredentialProvider . prototype , 'getCredentials' ) . resolves ( {
184
+ Token : 'example' ,
185
+ SecretAccessKey : 'example' ,
186
+ AccessKeyId : 'example' ,
187
+ // @ts -expect-error This is not an expected key.
188
+ UnknownField : 'example'
189
+ } ) ;
190
+ } ) ;
191
+ afterEach ( ( ) => sinon . restore ( ) ) ;
192
+ it ( 'only returns fields libmongocrypt expects' , async function ( ) {
193
+ const credentials = await new KMSCredentialProvider ( { aws : { } } ) . refreshCredentials ( ) ;
194
+ expect ( credentials ) . to . deep . equal ( {
195
+ aws : {
196
+ accessKeyId : accessKey ,
197
+ secretAccessKey : secretKey ,
198
+ sessionToken : sessionToken
199
+ }
200
+ } ) ;
201
+ } ) ;
202
+ } ) ;
178
203
} ) ;
179
204
180
205
context ( 'when using gcp' , ( ) => {
0 commit comments