@@ -1398,6 +1398,55 @@ TEST(AsyncClient, ResumeRewrite2) {
13981398}
13991399
14001400} // namespace
1401+
1402+ TEST (AsyncClient, ResumeAppendableObjectUpload2) {
1403+ auto constexpr kExpectedRequest = R"pb(
1404+ append_object_spec {
1405+ bucket: "projects/_/buckets/test-bucket",
1406+ object: "test-object",
1407+ generation: 42
1408+ }
1409+ flush: true
1410+ )pb" ;
1411+ auto mock = std::make_shared<MockAsyncConnection>();
1412+ EXPECT_CALL (*mock, options)
1413+ .WillRepeatedly (
1414+ Return (Options{}.set <TestOption<0 >>(" O0" ).set <TestOption<1 >>(" O1" )));
1415+
1416+ EXPECT_CALL (*mock, ResumeAppendableObjectUpload)
1417+ .WillOnce ([&](AsyncConnection::AppendableUploadParams const & p) {
1418+ EXPECT_THAT (p.options .get <TestOption<0 >>(), " O0" );
1419+ EXPECT_THAT (p.options .get <TestOption<1 >>(), " O1-function" );
1420+ EXPECT_THAT (p.options .get <TestOption<2 >>(), " O2-function" );
1421+ auto expected = google::storage::v2::BidiWriteObjectRequest{};
1422+ EXPECT_TRUE (TextFormat::ParseFromString (kExpectedRequest , &expected));
1423+ EXPECT_THAT (p.request , IsProtoEqual (expected));
1424+ auto writer = std::make_unique<MockAsyncWriterConnection>();
1425+ EXPECT_CALL (*writer, PersistedState)
1426+ .WillRepeatedly (Return (TestProtoObject ()));
1427+
1428+ return make_ready_future (make_status_or (
1429+ std::unique_ptr<AsyncWriterConnection>(std::move (writer))));
1430+ });
1431+
1432+ auto client = AsyncClient (mock);
1433+ auto request = google::storage::v2::BidiWriteObjectRequest{};
1434+ ASSERT_TRUE (TextFormat::ParseFromString (kExpectedRequest , &request));
1435+ auto wt = client
1436+ .ResumeAppendableObjectUpload (
1437+ std::move (request), Options{}
1438+ .set <TestOption<1 >>(" O1-function" )
1439+ .set <TestOption<2 >>(" O2-function" ))
1440+ .get ();
1441+ ASSERT_STATUS_OK (wt);
1442+ AsyncWriter w;
1443+ AsyncToken t;
1444+ std::tie (w, t) = *std::move (wt);
1445+ EXPECT_TRUE (t.valid ());
1446+ EXPECT_THAT (w.PersistedState (), VariantWith<google::storage::v2::Object>(
1447+ IsProtoEqual (TestProtoObject ())));
1448+ }
1449+
14011450GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
14021451} // namespace storage_experimental
14031452} // namespace cloud
0 commit comments