1111#include < aws/testing/AwsTestHelpers.h>
1212#include < aws/testing/MemoryTesting.h>
1313#include < memory>
14+ #include < aws/s3/S3ErrorMarshaller.h>
1415
1516using namespace Aws ;
1617using namespace Aws ::Client;
@@ -257,13 +258,25 @@ TEST_F(S3UnitTest, S3EmbeddedErrorTest) {
257258 EXPECT_EQ (" 656c76696e6727732072657175657374" , response.GetError ().GetRequestId ());
258259}
259260
261+ class MockRequest : public Aws ::AmazonWebServiceRequest
262+ {
263+ public:
264+ std::shared_ptr<Aws::IOStream> GetBody () const override {
265+ return nullptr ;
266+ }
267+
268+ Aws::Http::HeaderValueCollection GetHeaders () const override {
269+ return Aws::Http::HeaderValueCollection ();
270+ }
271+
272+ const char * GetServiceRequestName () const override {
273+ return " MockRequest" ;
274+ }
275+
276+ };
260277
261278// Set http error and error in body in a way to hit generic xml error marshaller, which sets the exception name
262279TEST_F (S3UnitTest, S3EmbeddedErrorTestNonOKResponse) {
263- const auto request = CopyObjectRequest ()
264- .WithBucket (" testBucket" )
265- .WithKey (" testKey" )
266- .WithCopySource (" testSource" );
267280
268281 auto mockRequest = Aws::MakeShared<Standard::StandardHttpRequest>(ALLOCATION_TAG, " mockuri" , HttpMethod::HTTP_GET);
269282 mockRequest->SetResponseStreamFactory ([]() -> IOStream* {
@@ -273,22 +286,17 @@ TEST_F(S3UnitTest, S3EmbeddedErrorTestNonOKResponse) {
273286 });
274287 auto mockResponse = Aws::MakeShared<Standard::StandardHttpResponse>(ALLOCATION_TAG, mockRequest);
275288 mockResponse->SetResponseCode (HttpResponseCode::ACCEPTED);
276-
277289 mockResponse->AddHeader (" Server" , " AmazonS3" );
278290 mockResponse->AddHeader (" Connection" , " close" );
279291 mockResponse->AddHeader (" Date" , " Mon, 1 Nov 2010 20:34:56 GMT" );
280292 mockResponse->AddHeader (" x-amz-request-id" , " 656c76696e6727732072657175657374" );
281293 mockResponse->AddHeader (" x-amz-id-2" , " Uuag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg==" );
282-
283- _mockHttpClient->AddResponseToReturn (mockResponse);
284-
285- auto endpointResolutionOutcome = _s3Client->accessEndpointProvider ()->ResolveEndpoint (request.GetEndpointContextParams ());
286-
287- const auto response = std::static_pointer_cast<S3TestClient>(_s3Client)->Aws ::Client::AWSXMLClient::MakeRequest (request, endpointResolutionOutcome.GetResult (), Aws::Http::HttpMethod::HTTP_PUT, " dummy" );
288-
289- EXPECT_TRUE (response.GetError ().GetExceptionName () == " InvalidAction" );
290-
291- EXPECT_FALSE (response.IsSuccess ());
294+ MockRequest request;
295+ auto errorMarshaller = S3ErrorMarshaller ();
296+ auto error = errorMarshaller.Marshall (*mockResponse);
297+ auto outcome = HttpResponseOutcome (std::move (error) );
298+ ASSERT_FALSE (outcome.IsSuccess ());
299+ EXPECT_TRUE (outcome.GetError ().GetExceptionName () == " InvalidAction" );
292300}
293301
294302TEST_F (S3UnitTest, PutObjectShouldHaveCorrectUserAgent) {
0 commit comments