88#include < aws/testing/mocks/aws/client/MockAWSClient.h>
99#include < aws/testing/mocks/http/MockHttpClient.h>
1010#include < aws/core/auth/AWSCredentialsProvider.h>
11- #include < aws/core/auth/AWSCredentialsProviderChain.h>
12- #include < aws/core/client/ClientConfiguration.h>
1311#include < aws/core/client/AWSClient.h>
1412#include < aws/core/utils/StringUtils.h>
15- #include < iostream >
13+ #include < aws/core/platform/Environment.h >
1614
1715using namespace Aws ::Client;
1816using namespace Aws ::Auth;
1917using namespace Aws ::Http;
2018
2119static const char ALLOCATION_TAG[] = " CredentialTrackingTest" ;
2220
23- // Custom client that uses environment credential provider for testing
24- class CredentialTestingClient : public Aws ::Client::AWSClient
25- {
26- public:
27- explicit CredentialTestingClient (const Aws::Client::ClientConfiguration& configuration)
28- : AWSClient(configuration,
29- Aws::MakeShared<Aws::Client::AWSAuthV4Signer>(ALLOCATION_TAG,
30- Aws::MakeShared<EnvironmentAWSCredentialsProvider>(ALLOCATION_TAG),
31- "service", configuration.region),
32- Aws::MakeShared<MockAWSErrorMarshaller>(ALLOCATION_TAG))
33- {
34- }
3521
36- Aws::Client::HttpResponseOutcome MakeRequest (const Aws::AmazonWebServiceRequest& request)
37- {
38- auto uri = Aws::Http::URI (" https://test.com" );
39- return AWSClient::AttemptExhaustively (uri, request, Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER);
40- }
41-
42- const char * GetServiceClientName () const override { return " CredentialTestingClient" ; }
43-
44- protected:
45- Aws::Client::AWSError<Aws::Client::CoreErrors> BuildAWSError (const std::shared_ptr<Aws::Http::HttpResponse>& response) const override
46- {
47- AWS_UNREFERENCED_PARAM (response);
48- return Aws::Client::AWSError<Aws::Client::CoreErrors>(Aws::Client::CoreErrors::UNKNOWN, false );
49- }
50- };
5122
5223class CredentialTrackingTest : public Aws ::Testing::AwsCppSdkGTestSuite
5324{
@@ -75,7 +46,6 @@ class CredentialTrackingTest : public Aws::Testing::AwsCppSdkGTestSuite
7546
7647TEST_F (CredentialTrackingTest, TestEnvironmentCredentialsTracking)
7748{
78- // Set environment variables
7949 Aws::Environment::SetEnv (" AWS_ACCESS_KEY_ID" , " test-access-key" , 1 );
8050 Aws::Environment::SetEnv (" AWS_SECRET_ACCESS_KEY" , " test-secret-key" , 1 );
8151
@@ -94,20 +64,22 @@ TEST_F(CredentialTrackingTest, TestEnvironmentCredentialsTracking)
9464 Aws::Client::ClientConfiguration clientConfig (cfgInit);
9565 clientConfig.region = Aws::Region::US_EAST_1;
9666
97- // Create credential testing client that uses default provider chain
98- CredentialTestingClient client (clientConfig);
99-
100- // Create mock request
67+ // Create client with environment credentials signer
68+ Aws::Client::AWSClient client (clientConfig,
69+ Aws::MakeShared<Aws::Client::AWSAuthV4Signer>(ALLOCATION_TAG,
70+ Aws::MakeShared<EnvironmentAWSCredentialsProvider>(ALLOCATION_TAG),
71+ " service" , clientConfig.region ),
72+ Aws::MakeShared<MockAWSErrorMarshaller>(ALLOCATION_TAG));
73+
10174 AmazonWebServiceRequestMock mockRequest;
102-
103- // Make request
104- auto outcome = client.MakeRequest (mockRequest);
105- ASSERT_TRUE (outcome.IsSuccess ());
75+ auto outcome = client.AttemptExhaustively (Aws::Http::URI (" https://test.com" ), mockRequest,
76+ Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER);
77+ AWS_ASSERT_SUCCESS (outcome);
10678
10779 // Verify User-Agent contains environment credentials tracking
10880 auto lastRequest = mockHttpClient->GetMostRecentHttpRequest ();
109- EXPECT_TRUE (lastRequest.HasHeader (Aws::Http::USER_AGENT_HEADER ));
110- const auto & userAgent = lastRequest.GetHeaderValue (Aws::Http::USER_AGENT_HEADER );
81+ EXPECT_TRUE (lastRequest.HasUserAgent ( ));
82+ const auto & userAgent = lastRequest.GetUserAgent ( );
11183 EXPECT_FALSE (userAgent.empty ());
11284
11385 const auto userAgentParsed = Aws::Utils::StringUtils::Split (userAgent, ' ' );
@@ -118,7 +90,6 @@ TEST_F(CredentialTrackingTest, TestEnvironmentCredentialsTracking)
11890
11991 EXPECT_TRUE (businessMetrics != userAgentParsed.end ());
12092
121- // Clean up environment variables
12293 Aws::Environment::UnSetEnv (" AWS_ACCESS_KEY_ID" );
12394 Aws::Environment::UnSetEnv (" AWS_SECRET_ACCESS_KEY" );
12495}
0 commit comments