Skip to content

Commit 44c2a81

Browse files
committed
update test case
1 parent a23e594 commit 44c2a81

File tree

3 files changed

+36
-30
lines changed

3 files changed

+36
-30
lines changed

internal/integration/client_side_encryption_prose_test.go

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3177,11 +3177,7 @@ func TestClientSideEncryptionProse(t *testing.T) {
31773177
return cred, nil
31783178
},
31793179
})
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)
3180+
_, err = mongo.NewClientEncryption(keyVaultClient, ceo)
31853181
assert.Error(mt, err, "expected an error")
31863182
})
31873183
mt.Run("Case 2: ClientEncryption with credentialProviders works", func(mt *mtest.T) {
@@ -3209,7 +3205,10 @@ func TestClientSideEncryptionProse(t *testing.T) {
32093205
clientEncryption, err := mongo.NewClientEncryption(keyVaultClient, ceo)
32103206
assert.NoErrorf(mt, err, "error on NewClientEncryption: %v", err)
32113207

3212-
dkOpts := options.DataKey()
3208+
dkOpts := options.DataKey().SetMasterKey(bson.D{
3209+
{"region", "us-east-1"},
3210+
{"key", "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0"},
3211+
})
32133212
_, err = clientEncryption.CreateDataKey(context.Background(), "aws", dkOpts)
32143213
assert.NoErrorf(mt, err, "unexpected error %v", err)
32153214
assert.Equal(mt, 1, calledCount, "expected credential provider to be called once")
@@ -3254,35 +3253,32 @@ func TestClientSideEncryptionProse(t *testing.T) {
32543253
keyVaultClient, err := mongo.Connect(opts)
32553254
assert.NoErrorf(mt, err, "error on Connect: %v", err)
32563255

3256+
var calledCount int
32573257
ceo := options.ClientEncryption().
32583258
SetKeyVaultNamespace("keyvault.datakeys").
32593259
SetKmsProviders(map[string]map[string]any{
3260-
"aws": {
3261-
"accessKeyId": awsAccessKeyID,
3262-
"secretAccessKey": awsSecretAccessKey,
3263-
},
3260+
"aws": map[string]any{},
32643261
}).
32653262
SetCredentialProviders(map[string]options.CredentialsProvider{
32663263
"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
3264+
calledCount++
3265+
return options.Credentials{
3266+
AccessKeyID: awsAccessKeyID,
3267+
SecretAccessKey: awsSecretAccessKey,
3268+
ExpirationCallback: func() bool { return false },
3269+
}, nil
32783270
},
32793271
})
32803272
clientEncryption, err := mongo.NewClientEncryption(keyVaultClient, ceo)
32813273
assert.NoErrorf(mt, err, "error on NewClientEncryption: %v", err)
32823274

3283-
dkOpts := options.DataKey()
3275+
dkOpts := options.DataKey().SetMasterKey(bson.D{
3276+
{"region", "us-east-1"},
3277+
{"key", "arn:aws:kms:us-east-1:579766882180:key/89fcc2c4-08b0-4bd9-9f25-e30687b580d0"},
3278+
})
32843279
_, err = clientEncryption.CreateDataKey(context.Background(), "aws", dkOpts)
32853280
assert.NoErrorf(mt, err, "unexpected error %v", err)
3281+
assert.Equal(mt, 1, calledCount, "expected credential provider to be called once")
32863282
})
32873283
})
32883284
}

internal/test/aws/aws_test.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"testing"
1414

1515
"go.mongodb.org/mongo-driver/v2/bson"
16+
"go.mongodb.org/mongo-driver/v2/internal/credproviders"
1617
"go.mongodb.org/mongo-driver/v2/internal/require"
1718
"go.mongodb.org/mongo-driver/v2/mongo"
1819
"go.mongodb.org/mongo-driver/v2/mongo/options"
@@ -46,15 +47,20 @@ func TestAWSCustomCredentialProviders(t *testing.T) {
4647
}
4748

4849
var calledCount int
50+
provider := credproviders.NewEnvProvider()
4951
awsCredential := options.Credential{
50-
AuthMechanism: "MONGODB-AWS",
51-
AwsCredentialsProvider: func(_ context.Context) (options.Credentials, error) {
52+
AwsCredentialsProvider: func(ctx context.Context) (options.Credentials, error) {
5253
calledCount++
53-
return options.Credentials{
54-
AccessKeyID: os.Getenv("AWS_ACCESS_KEY_ID"),
55-
SecretAccessKey: os.Getenv("AWS_SECRET_ACCESS_KEY"),
56-
ExpirationCallback: func() bool { return false },
57-
}, nil
54+
var creds options.Credentials
55+
value, err := provider.Retrieve(ctx)
56+
if err != nil {
57+
return creds, err
58+
}
59+
creds.AccessKeyID = value.AccessKeyID
60+
creds.SecretAccessKey = value.SecretAccessKey
61+
creds.SessionToken = value.SessionToken
62+
creds.ExpirationCallback = provider.IsExpired
63+
return creds, nil
5864
},
5965
}
6066
client, err := mongo.Connect(options.Client().ApplyURI(uri).SetAuth(awsCredential))

x/mongo/driver/mongocrypt/mongocrypt.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,16 @@ func NewMongoCrypt(opts *options.MongoCryptOptions) (*MongoCrypt, error) {
6565
if needsKmsProvider(opts.KmsProviders, "gcp") {
6666
kmsProviders["gcp"] = creds.NewGCPCredentialProvider(httpClient)
6767
}
68+
provider, ok := opts.CredentialProviders["aws"]
6869
if needsKmsProvider(opts.KmsProviders, "aws") {
6970
var providers []credentials.Provider
70-
if provider, ok := opts.CredentialProviders["aws"]; ok {
71+
if ok {
7172
providers = append(providers, provider)
7273
}
7374
kmsProviders["aws"] = creds.NewAWSCredentialProvider(httpClient, providers...)
75+
} else if ok {
76+
return nil, fmt.Errorf("can only provide a custom AWS credential provider " +
77+
"when the state machine is configured for automatic AWS credential fetching")
7478
}
7579
if needsKmsProvider(opts.KmsProviders, "azure") {
7680
kmsProviders["azure"] = creds.NewAzureCredentialProvider(httpClient)

0 commit comments

Comments
 (0)