@@ -2988,8 +2988,16 @@ func TestClientSideEncryptionProse(t *testing.T) {
29882988			mt .Skipf ("Skipping test as KMS_FAILPOINT_SERVERS_RUNNING is not set" )
29892989		}
29902990
2991- 		tlsCfg  :=  & tls.Config {
2992- 			InsecureSkipVerify : true ,
2991+ 		mt .Parallel ()
2992+ 
2993+ 		var  tlsCfg  * tls.Config 
2994+ 		if  tlsCAFileKMIP  !=  ""  {
2995+ 			var  err  error 
2996+ 			clientAndCATlsMap  :=  map [string ]interface {}{
2997+ 				"tlsCAFile" : tlsCAFileKMIP ,
2998+ 			}
2999+ 			tlsCfg , err  =  options .BuildTLSConfig (clientAndCATlsMap )
3000+ 			require .Nil (mt , err , "BuildTLSConfig error: %v" , err )
29933001		}
29943002
29953003		setFailPoint  :=  func (failure  string , count  int ) error  {
@@ -3012,39 +3020,69 @@ func TestClientSideEncryptionProse(t *testing.T) {
30123020			return  res .Body .Close ()
30133021		}
30143022
3015- 		keyVaultClient , err  :=  mongo .Connect (options .Client ().ApplyURI (mtest .ClusterURI ()))
3016- 		require .NoError (mt , err , "error on Connect: %v" , err )
3017- 
3018- 		ceo  :=  options .ClientEncryption ().
3019- 			SetKeyVaultNamespace ("keyvault.datakeys" ).
3020- 			SetKmsProviders (fullKmsProvidersMap ).
3021- 			SetTLSConfig (map [string ]* tls.Config {"aws" : tlsCfg })
3022- 		clientEncryption , err  :=  mongo .NewClientEncryption (keyVaultClient , ceo )
3023- 		require .NoError (mt , err , "error on NewClientEncryption: %v" , err )
3024- 
3025- 		err  =  setFailPoint ("network" , 1 )
3026- 		require .NoError (mt , err , "mock server error: %v" , err )
3027- 
3028- 		dkOpts  :=  options .DataKey ().SetMasterKey (
3029- 			bson.D {
3023+ 		dataKeys  :=  []struct  {
3024+ 			provider   string 
3025+ 			masterKey  interface {}
3026+ 		}{
3027+ 			{"aws" , bson.D {
30303028				{"region" , "foo" },
30313029				{"key" , "bar" },
30323030				{"endpoint" , "127.0.0.1:9003" },
3033- 			},
3034- 		)
3035- 		var  keyID  bson.Binary 
3036- 		keyID , err  =  clientEncryption .CreateDataKey (context .Background (), "aws" , dkOpts )
3037- 		require .NoError (mt , err , "error in CreateDataKey: %v" , err )
3031+ 			}},
3032+ 			{"azure" , bson.D {
3033+ 				{"keyVaultEndpoint" , "127.0.0.1:9003" },
3034+ 				{"keyName" , "foo" },
3035+ 			}},
3036+ 			{"gcp" , bson.D {
3037+ 				{"projectId" , "foo" },
3038+ 				{"location" , "bar" },
3039+ 				{"keyRing" , "baz" },
3040+ 				{"keyName" , "qux" },
3041+ 				{"endpoint" , "127.0.0.1:9003" },
3042+ 			}},
3043+ 		}
30383044
3039- 		err  =  setFailPoint ("network" , 1 )
3040- 		require .NoError (mt , err , "mock server error: %v" , err )
3045+ 		testCases  :=  []struct  {
3046+ 			name     string 
3047+ 			failure  string 
3048+ 		}{
3049+ 			{"Case 1: createDataKey and encrypt with TCP retry" , "network" },
3050+ 			{"Case 2: createDataKey and encrypt with HTTP retry" , "http" },
3051+ 		}
30413052
3042- 		testVal  :=  bson.RawValue {Type : bson .TypeInt32 , Value : bsoncore .AppendInt32 (nil , 123 )}
3043- 		eo  :=  options .Encrypt ().
3044- 			SetKeyID (keyID ).
3045- 			SetAlgorithm ("AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" )
3046- 		_ , err  =  clientEncryption .Encrypt (context .Background (), testVal , eo )
3047- 		assert .NoError (mt , err , "error in Encrypt: %v" , err )
3053+ 		for  _ , tc  :=  range  testCases  {
3054+ 			mt .Run (tc .name , func (mt  * mtest.T ) {
3055+ 				for  _ , dataKey  :=  range  dataKeys  {
3056+ 					keyVaultClient , err  :=  mongo .Connect (options .Client ().ApplyURI (mtest .ClusterURI ()))
3057+ 					require .NoError (mt , err , "error on Connect: %v" , err )
3058+ 
3059+ 					ceo  :=  options .ClientEncryption ().
3060+ 						SetKeyVaultNamespace (kvNamespace ).
3061+ 						SetKmsProviders (fullKmsProvidersMap ).
3062+ 						SetTLSConfig (map [string ]* tls.Config {dataKey .provider : tlsCfg })
3063+ 					clientEncryption , err  :=  mongo .NewClientEncryption (keyVaultClient , ceo )
3064+ 					require .NoError (mt , err , "error on NewClientEncryption: %v" , err )
3065+ 
3066+ 					err  =  setFailPoint (tc .failure , 1 )
3067+ 					require .NoError (mt , err , "mock server error: %v" , err )
3068+ 
3069+ 					dkOpts  :=  options .DataKey ().SetMasterKey (dataKey .masterKey )
3070+ 					var  keyID  bson.Binary 
3071+ 					keyID , err  =  clientEncryption .CreateDataKey (context .Background (), dataKey .provider , dkOpts )
3072+ 					require .NoError (mt , err , "error in CreateDataKey: %v" , err )
3073+ 
3074+ 					err  =  setFailPoint (tc .failure , 1 )
3075+ 					require .NoError (mt , err , "mock server error: %v" , err )
3076+ 
3077+ 					testVal  :=  bson.RawValue {Type : bson .TypeInt32 , Value : bsoncore .AppendInt32 (nil , 123 )}
3078+ 					eo  :=  options .Encrypt ().
3079+ 						SetKeyID (keyID ).
3080+ 						SetAlgorithm ("AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic" )
3081+ 					_ , err  =  clientEncryption .Encrypt (context .Background (), testVal , eo )
3082+ 					assert .NoError (mt , err , "error in Encrypt: %v" , err )
3083+ 				}
3084+ 			})
3085+ 		}
30483086	})
30493087}
30503088
0 commit comments