|
5 | 5 | #include <aws/core/http/standard/StandardHttpRequest.h> |
6 | 6 | #include <aws/core/utils/crypto/CRC32.h> |
7 | 7 | #include <aws/core/utils/stream/AwsChunkedStream.h> |
8 | | -#include <smithy/client/features/ChunkingInterceptor.h> |
9 | 8 | #include <aws/testing/AwsCppSdkGTestSuite.h> |
10 | 9 |
|
11 | 10 | using namespace Aws; |
12 | 11 | using namespace Aws::Http::Standard; |
13 | 12 | using namespace Aws::Utils::Stream; |
14 | 13 | using namespace Aws::Utils::Crypto; |
15 | 14 |
|
16 | | -const char* TEST_LOG_TAG = "AWS_CHUNKED_STREAM_TEST"; |
| 15 | +class AwsChunkedStreamTest : public Aws::Testing::AwsCppSdkGTestSuite {}; |
17 | 16 |
|
18 | | -class AwsChunkedStreamTest : public Aws::Testing::AwsCppSdkGTestSuite { |
19 | | -protected: |
20 | | - StandardHttpRequest CreateRequestWithChecksum(const std::string& url, const std::string& /* data */) { |
21 | | - StandardHttpRequest request{Http::URI(Aws::String(url.c_str())), Http::HttpMethod::HTTP_GET}; |
22 | | - auto requestHash = Aws::MakeShared<CRC32>(TEST_LOG_TAG); |
23 | | - request.SetRequestHash("crc32", requestHash); |
24 | | - return request; |
25 | | - } |
26 | | - |
27 | | - std::string ReadEntireStream(Aws::IOStream& stream) { |
28 | | - Aws::StringStream output; |
29 | | - char buffer[100]; |
30 | | - while (stream.read(buffer, sizeof(buffer))) { |
31 | | - output.write(buffer, stream.gcount()); |
32 | | - } |
33 | | - if (stream.gcount() > 0) { |
34 | | - output.write(buffer, stream.gcount()); |
35 | | - } |
36 | | - return output.str().c_str(); |
37 | | - } |
38 | | -}; |
| 17 | +const char* TEST_LOG_TAG = "AWS_CHUNKED_STREAM_TEST"; |
39 | 18 |
|
40 | 19 | TEST_F(AwsChunkedStreamTest, ChunkedStreamShouldWork) { |
41 | 20 | StandardHttpRequest request{"www.elda.com/will", Http::HttpMethod::HTTP_GET}; |
@@ -118,49 +97,3 @@ TEST_F(AwsChunkedStreamTest, ShouldWorkOnEmptyStream) { |
118 | 97 | auto encodedStr = firstRead.str(); |
119 | 98 | EXPECT_EQ("0\r\nx-amz-checksum-crc32:AAAAAA==\r\n\r\n", encodedStr); |
120 | 99 | } |
121 | | - |
122 | | -TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldWork) { |
123 | | - auto request = CreateRequestWithChecksum("www.elda.com/will", "1234567890123456789012345"); |
124 | | - std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "1234567890123456789012345"); |
125 | | - auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 10); |
126 | | - Aws::IOStream chunkedStream(chunkedBuf.get()); |
127 | | - const auto encodedStr = ReadEntireStream(chunkedStream); |
128 | | - auto expectedStreamWithChecksum = "A\r\n1234567890\r\nA\r\n1234567890\r\n5\r\n12345\r\n0\r\nx-amz-checksum-crc32:78DeVw==\r\n\r\n"; |
129 | | - EXPECT_EQ(expectedStreamWithChecksum, encodedStr); |
130 | | -} |
131 | | - |
132 | | -TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldNotRequireTwoReadsOnSmallChunk) { |
133 | | - auto request = CreateRequestWithChecksum("www.clemar.com/strohl", "12345"); |
134 | | - std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "12345"); |
135 | | - auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 100); |
136 | | - Aws::IOStream chunkedStream(chunkedBuf.get()); |
137 | | - const auto encodedStr = ReadEntireStream(chunkedStream); |
138 | | - auto expectedStreamWithChecksum = "5\r\n12345\r\n0\r\nx-amz-checksum-crc32:y/U6HA==\r\n\r\n"; |
139 | | - EXPECT_EQ(expectedStreamWithChecksum, encodedStr); |
140 | | -} |
141 | | - |
142 | | -TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldWorkOnSmallBuffer) { |
143 | | - auto request = CreateRequestWithChecksum("www.eugief.com/hesimay", "1234567890"); |
144 | | - std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "1234567890"); |
145 | | - auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 5); |
146 | | - Aws::IOStream chunkedStream(chunkedBuf.get()); |
147 | | - char buffer[10]; |
148 | | - chunkedStream.read(buffer, sizeof(buffer)); |
149 | | - std::string firstRead(buffer, chunkedStream.gcount()); |
150 | | - EXPECT_EQ("5\r\n12345\r\n", firstRead); |
151 | | - char buffer2[50]; |
152 | | - chunkedStream.read(buffer2, sizeof(buffer2)); |
153 | | - std::string secondRead(buffer2, chunkedStream.gcount()); |
154 | | - EXPECT_EQ("5\r\n67890\r\n0\r\nx-amz-checksum-crc32:Jh2u5Q==\r\n\r\n", secondRead); |
155 | | - chunkedStream.read(buffer, sizeof(buffer)); |
156 | | - EXPECT_EQ(0, chunkedStream.gcount()); |
157 | | -} |
158 | | - |
159 | | -TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldWorkOnEmptyStream) { |
160 | | - auto request = CreateRequestWithChecksum("www.nidia.com/juna", ""); |
161 | | - std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, ""); |
162 | | - auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 5); |
163 | | - Aws::IOStream chunkedStream(chunkedBuf.get()); |
164 | | - const auto encodedStr = ReadEntireStream(chunkedStream); |
165 | | - EXPECT_EQ("0\r\nx-amz-checksum-crc32:AAAAAA==\r\n\r\n", encodedStr); |
166 | | -} |
0 commit comments