@@ -234,119 +234,6 @@ TEST_F(ObjectTest, ReadObject) {
234234 EXPECT_EQ (actual.gcount (), 1024 );
235235}
236236
237- TEST_F (ObjectTest, ReadObjectChecksumPrecedence) {
238- EXPECT_CALL (*mock_, ReadObject)
239- .WillOnce ([](internal::ReadObjectRangeRequest const & r) {
240- EXPECT_TRUE (r.HasOption <DisableMD5Hash>());
241- EXPECT_FALSE (r.GetOption <DisableMD5Hash>().value ());
242-
243- auto settings =
244- internal::GetDownloadChecksumSettings (r, CurrentOptions ());
245- // Verify MD5 is enabled (disable_md5 = false) and CRC32C is disabled
246- // (disable_crc32c = true)
247- EXPECT_FALSE (settings.md5 );
248- EXPECT_TRUE (settings.crc32c );
249-
250- auto read_source = std::make_unique<testing::MockObjectReadSource>();
251- EXPECT_CALL (*read_source, IsOpen ()).WillRepeatedly (Return (true ));
252- EXPECT_CALL (*read_source, Read)
253- .WillOnce (Return (internal::ReadSourceResult{1024 , {}}));
254- EXPECT_CALL (*read_source, Close).Times (1 );
255- return StatusOr<std::unique_ptr<internal::ObjectReadSource>>(
256- std::move (read_source));
257- });
258- auto client = ClientForMock ();
259- auto actual = client.ReadObject (
260- " test-bucket-name" , " test-object-name" , DisableMD5Hash (false ),
261- Options{}.set <DownloadChecksumValidationOption>(
262- ChecksumAlgorithm::kNone ));
263- ASSERT_STATUS_OK (actual.status ());
264- std::vector<char > v (1024 );
265- actual.read (v.data (), v.size ());
266- EXPECT_EQ (actual.gcount (), 1024 );
267- }
268-
269- TEST_F (ObjectTest, ReadObjectChecksumPrecedenceDisableMD5) {
270- EXPECT_CALL (*mock_, ReadObject)
271- .WillOnce ([](internal::ReadObjectRangeRequest const & r) {
272- EXPECT_TRUE (r.HasOption <DisableMD5Hash>());
273- EXPECT_TRUE (r.GetOption <DisableMD5Hash>().value ());
274-
275- auto settings =
276- internal::GetDownloadChecksumSettings (r, CurrentOptions ());
277- // DisableMD5Hash(true) should override ChecksumAlgorithm::kMD5
278- EXPECT_TRUE (settings.md5 );
279- EXPECT_TRUE (settings.crc32c ); // kMD5 disables crc32c
280-
281- auto read_source = std::make_unique<testing::MockObjectReadSource>();
282- EXPECT_CALL (*read_source, IsOpen ()).WillRepeatedly (Return (true ));
283- EXPECT_CALL (*read_source, Read)
284- .WillOnce (Return (internal::ReadSourceResult{1024 , {}}));
285- EXPECT_CALL (*read_source, Close).Times (1 );
286- return StatusOr<std::unique_ptr<internal::ObjectReadSource>>(
287- std::move (read_source));
288- });
289- auto client = ClientForMock ();
290- auto actual = client.ReadObject (
291- " test-bucket-name" , " test-object-name" , DisableMD5Hash (true ),
292- Options{}.set <DownloadChecksumValidationOption>(ChecksumAlgorithm::kMD5 ));
293- ASSERT_STATUS_OK (actual.status ());
294- std::vector<char > v (1024 );
295- actual.read (v.data (), v.size ());
296- EXPECT_EQ (actual.gcount (), 1024 );
297- }
298-
299- TEST_F (ObjectTest, InsertObjectChecksumPrecedence) {
300- EXPECT_CALL (*mock_, InsertObjectMedia)
301- .WillOnce ([](internal::InsertObjectMediaRequest const & r) {
302- EXPECT_TRUE (r.HasOption <DisableCrc32cChecksum>());
303- EXPECT_TRUE (r.GetOption <DisableCrc32cChecksum>().value ());
304-
305- auto settings =
306- internal::GetUploadChecksumSettings (r, CurrentOptions ());
307- // Verify CRC32C is disabled (disable_crc32c = true) and MD5 remains
308- // enabled (disable_md5 = false)
309- EXPECT_TRUE (settings.crc32c );
310- EXPECT_FALSE (settings.md5 );
311-
312- return make_status_or (
313- storage::internal::ObjectMetadataParser::FromString (
314- R"( {"name": "test-object-name"})" )
315- .value ());
316- });
317- auto client = ClientForMock ();
318- auto actual =
319- client.InsertObject (" test-bucket-name" , " test-object-name" , " payload" ,
320- DisableCrc32cChecksum (true ),
321- Options{}.set <UploadChecksumValidationOption>(
322- ChecksumAlgorithm::kCrc32cAndMD5 ));
323- ASSERT_STATUS_OK (actual);
324- }
325-
326- TEST_F (ObjectTest, InsertObjectChecksumPrecedenceEnableCrc32c) {
327- EXPECT_CALL (*mock_, InsertObjectMedia)
328- .WillOnce ([](internal::InsertObjectMediaRequest const & r) {
329- EXPECT_TRUE (r.HasOption <DisableCrc32cChecksum>());
330- EXPECT_FALSE (r.GetOption <DisableCrc32cChecksum>().value ());
331-
332- auto settings =
333- internal::GetUploadChecksumSettings (r, CurrentOptions ());
334- // DisableCrc32cChecksum(false) should override ChecksumAlgorithm::kNone
335- EXPECT_FALSE (settings.crc32c );
336- EXPECT_TRUE (settings.md5 ); // kNone disables md5
337-
338- return make_status_or (
339- storage::internal::ObjectMetadataParser::FromString (
340- R"( {"name": "test-object-name"})" )
341- .value ());
342- });
343- auto client = ClientForMock ();
344- auto actual = client.InsertObject (
345- " test-bucket-name" , " test-object-name" , " payload" ,
346- DisableCrc32cChecksum (false ),
347- Options{}.set <UploadChecksumValidationOption>(ChecksumAlgorithm::kNone ));
348- ASSERT_STATUS_OK (actual);
349- }
350237
351238TEST_F (ObjectTest, WriteObject) {
352239 EXPECT_CALL (*mock_, CreateResumableUpload)
0 commit comments