@@ -1236,3 +1236,57 @@ TEST_F(AWSCachedCredentialsTest, ShouldCacheCredenitalAsync)
12361236 ASSERT_TRUE (containCredentials (creds, {" and" , " no" , " surprises" }));
12371237 ASSERT_FALSE (containCredentials (creds, {" a" , " quiet" , " life" }));
12381238}
1239+
1240+ class DefaultAWSCredentialsProviderChainTest : public EnvironmentModifyingTest
1241+ {
1242+ };
1243+
1244+ TEST_F (DefaultAWSCredentialsProviderChainTest, TestProfileConsistency)
1245+ {
1246+ // Create credentials file with test profiles
1247+ Aws::OFStream credsFile (m_credsFileName.c_str (), Aws::OFStream::out | Aws::OFStream::trunc);
1248+ credsFile << " [default]" << std::endl;
1249+ credsFile << " aws_access_key_id = DefaultAccessKey" << std::endl;
1250+ credsFile << " aws_secret_access_key = DefaultSecretKey" << std::endl;
1251+ credsFile << std::endl;
1252+ credsFile << " [test-profile]" << std::endl;
1253+ credsFile << " aws_access_key_id = TestProfileAccessKey" << std::endl;
1254+ credsFile << " aws_secret_access_key = TestProfileSecretKey" << std::endl;
1255+ credsFile.close ();
1256+
1257+ // Disable EC2 metadata service for faster tests
1258+ Aws::Environment::SetEnv (" AWS_EC2_METADATA_DISABLED" , " true" , 1 );
1259+
1260+ // Test with default profile (empty config)
1261+ {
1262+ Aws::Client::CredentialProviderConfiguration config;
1263+ DefaultAWSCredentialsProviderChain providerChain (config);
1264+ auto creds = providerChain.GetAWSCredentials ();
1265+ EXPECT_EQ (" DefaultAccessKey" , creds.GetAWSAccessKeyId ());
1266+ EXPECT_EQ (" DefaultSecretKey" , creds.GetAWSSecretKey ());
1267+ }
1268+
1269+ // Test with specific profile in config
1270+ {
1271+ Aws::Client::CredentialProviderConfiguration config;
1272+ config.profile = " test-profile" ;
1273+ DefaultAWSCredentialsProviderChain providerChain (config);
1274+ auto creds = providerChain.GetAWSCredentials ();
1275+ EXPECT_EQ (" TestProfileAccessKey" , creds.GetAWSAccessKeyId ());
1276+ EXPECT_EQ (" TestProfileSecretKey" , creds.GetAWSSecretKey ());
1277+ }
1278+
1279+ // Test with environment variables overriding profile
1280+ Aws::Environment::SetEnv (" AWS_ACCESS_KEY_ID" , " EnvAccessKey" , 1 );
1281+ Aws::Environment::SetEnv (" AWS_SECRET_ACCESS_KEY" , " EnvSecretKey" , 1 );
1282+
1283+ {
1284+ Aws::Client::CredentialProviderConfiguration config;
1285+ config.profile = " test-profile" ;
1286+ DefaultAWSCredentialsProviderChain providerChain (config);
1287+ auto creds = providerChain.GetAWSCredentials ();
1288+ // Environment variables should take precedence
1289+ EXPECT_EQ (" EnvAccessKey" , creds.GetAWSAccessKeyId ());
1290+ EXPECT_EQ (" EnvSecretKey" , creds.GetAWSSecretKey ());
1291+ }
1292+ }
0 commit comments