@@ -3148,6 +3148,8 @@ func TestClientSideEncryptionProse(t *testing.T) {
31483148 })
31493149
31503150 mt .RunOpts ("26. custom AWS credentials" , qeRunOpts22 , func (mt * mtest.T ) {
3151+ provider := credproviders .NewEnvProvider ()
3152+
31513153 mt .Run ("Case 1: ClientEncryption with credentialProviders and incorrect kmsProviders" , func (mt * mtest.T ) {
31523154 opts := options .Client ().ApplyURI (mtest .ClusterURI ())
31533155 integtest .AddTestServerAPIVersion (opts )
@@ -3165,7 +3167,6 @@ func TestClientSideEncryptionProse(t *testing.T) {
31653167 SetCredentialProviders (map [string ]options.CredentialsProvider {
31663168 "aws" : func (ctx context.Context ) (options.Credentials , error ) {
31673169 var cred options.Credentials
3168- provider := credproviders .NewEnvProvider ()
31693170 c , err := provider .Retrieve (ctx )
31703171 if err != nil {
31713172 return cred , err
@@ -3177,12 +3178,9 @@ func TestClientSideEncryptionProse(t *testing.T) {
31773178 return cred , nil
31783179 },
31793180 })
3180- clientEncryption , err := mongo .NewClientEncryption (keyVaultClient , ceo )
3181- assert .NoErrorf (mt , err , "error on NewClientEncryption: %v" , err )
3182-
3183- dkOpts := options .DataKey ()
3184- _ , err = clientEncryption .CreateDataKey (context .Background (), "aws" , dkOpts )
3185- assert .Error (mt , err , "expected an error" )
3181+ _ , err = mongo .NewClientEncryption (keyVaultClient , ceo )
3182+ assert .ErrorContains (mt , err , "can only provide a custom AWS credential provider" ,
3183+ "unexpected error: %v" , err )
31863184 })
31873185 mt .Run ("Case 2: ClientEncryption with credentialProviders works" , func (mt * mtest.T ) {
31883186 opts := options .Client ().ApplyURI (mtest .ClusterURI ())
@@ -3209,7 +3207,10 @@ func TestClientSideEncryptionProse(t *testing.T) {
32093207 clientEncryption , err := mongo .NewClientEncryption (keyVaultClient , ceo )
32103208 assert .NoErrorf (mt , err , "error on NewClientEncryption: %v" , err )
32113209
3212- dkOpts := options .DataKey ()
3210+ dkOpts := options .DataKey ().SetMasterKey (bson.D {
3211+ {"region" , "us-east-1" },
3212+ {"key" , "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0" },
3213+ })
32133214 _ , err = clientEncryption .CreateDataKey (context .Background (), "aws" , dkOpts )
32143215 assert .NoErrorf (mt , err , "unexpected error %v" , err )
32153216 assert .Equal (mt , 1 , calledCount , "expected credential provider to be called once" )
@@ -3227,7 +3228,6 @@ func TestClientSideEncryptionProse(t *testing.T) {
32273228 SetCredentialProviders (map [string ]options.CredentialsProvider {
32283229 "aws" : func (ctx context.Context ) (options.Credentials , error ) {
32293230 var cred options.Credentials
3230- provider := credproviders .NewEnvProvider ()
32313231 c , err := provider .Retrieve (ctx )
32323232 if err != nil {
32333233 return cred , err
@@ -3242,47 +3242,45 @@ func TestClientSideEncryptionProse(t *testing.T) {
32423242 co := options .Client ().SetAutoEncryptionOptions (aeo ).ApplyURI (mtest .ClusterURI ())
32433243 integtest .AddTestServerAPIVersion (co )
32443244 _ , err := mongo .Connect (co )
3245- assert .Error (mt , err , "expected an error" )
3245+ assert .ErrorContainsf (mt , err , "can only provide a custom AWS credential provider" ,
3246+ "unexpected error: %v" , err )
32463247 })
32473248
32483249 mt .Run ("Case 4: ClientEncryption with credentialProviders and valid environment variables" , func (mt * mtest.T ) {
3249- mt .Setenv ("AWS_ACCESS_KEY_ID" , os .Getenv ("FLE_AWS_SECRET_ACCESS_KEY" ))
3250- mt .Setenv ("AWS_SECRET_ACCESS_KEY" , os .Getenv ("FLE_AWS_ACCESS_KEY_ID" ))
3250+ // mt.Setenv("AWS_ACCESS_KEY_ID", os.Getenv("FLE_AWS_SECRET_ACCESS_KEY"))
3251+ // mt.Setenv("AWS_SECRET_ACCESS_KEY", os.Getenv("FLE_AWS_ACCESS_KEY_ID"))
32513252
32523253 opts := options .Client ().ApplyURI (mtest .ClusterURI ())
32533254 integtest .AddTestServerAPIVersion (opts )
32543255 keyVaultClient , err := mongo .Connect (opts )
32553256 assert .NoErrorf (mt , err , "error on Connect: %v" , err )
32563257
3258+ var calledCount int
32573259 ceo := options .ClientEncryption ().
32583260 SetKeyVaultNamespace ("keyvault.datakeys" ).
32593261 SetKmsProviders (map [string ]map [string ]any {
3260- "aws" : {
3261- "accessKeyId" : awsAccessKeyID ,
3262- "secretAccessKey" : awsSecretAccessKey ,
3263- },
3262+ "aws" : map [string ]any {},
32643263 }).
32653264 SetCredentialProviders (map [string ]options.CredentialsProvider {
32663265 "aws" : func (ctx context.Context ) (options.Credentials , error ) {
3267- var cred options.Credentials
3268- provider := credproviders .NewEnvProvider ()
3269- c , err := provider .Retrieve (ctx )
3270- if err != nil {
3271- return cred , err
3272- }
3273- cred .AccessKeyID = c .AccessKeyID
3274- cred .SecretAccessKey = c .SecretAccessKey
3275- cred .SessionToken = c .SessionToken
3276- cred .ExpirationCallback = provider .IsExpired
3277- return cred , nil
3266+ calledCount ++
3267+ return options.Credentials {
3268+ AccessKeyID : awsAccessKeyID ,
3269+ SecretAccessKey : awsSecretAccessKey ,
3270+ ExpirationCallback : func () bool { return false },
3271+ }, nil
32783272 },
32793273 })
32803274 clientEncryption , err := mongo .NewClientEncryption (keyVaultClient , ceo )
32813275 assert .NoErrorf (mt , err , "error on NewClientEncryption: %v" , err )
32823276
3283- dkOpts := options .DataKey ()
3277+ dkOpts := options .DataKey ().SetMasterKey (bson.D {
3278+ {"region" , "us-east-1" },
3279+ {"key" , "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0" },
3280+ })
32843281 _ , err = clientEncryption .CreateDataKey (context .Background (), "aws" , dkOpts )
32853282 assert .NoErrorf (mt , err , "unexpected error %v" , err )
3283+ assert .Equal (mt , 1 , calledCount , "expected credential provider to be called once" )
32863284 })
32873285 })
32883286}
0 commit comments