@@ -61,6 +61,76 @@ auto TestProtoObject() {
6161 return result;
6262}
6363
64+ auto TestProtoBucket () {
65+ google::storage::v2::Bucket result;
66+ result.set_name (" projects/_/buckets/test-bucket" );
67+ return result;
68+ }
69+
70+ TEST (AsyncClient, GetBucket1) {
71+ auto constexpr kExpectedRequest = R"pb(
72+ name: "projects/_/buckets/test-bucket"
73+ )pb" ;
74+ auto mock = std::make_shared<MockAsyncConnection>();
75+ EXPECT_CALL (*mock, options)
76+ .WillRepeatedly (
77+ Return (Options{}.set <TestOption<0 >>(" O0" ).set <TestOption<1 >>(" O1" )));
78+
79+ EXPECT_CALL (*mock, GetBucket)
80+ .WillOnce ([&](AsyncConnection::GetBucketParams const & p) {
81+ EXPECT_THAT (p.options .get <TestOption<0 >>(), " O0" );
82+ EXPECT_THAT (p.options .get <TestOption<1 >>(), " O1-function" );
83+ EXPECT_THAT (p.options .get <TestOption<2 >>(), " O2-function" );
84+ auto expected = google::storage::v2::GetBucketRequest{};
85+ EXPECT_TRUE (TextFormat::ParseFromString (kExpectedRequest , &expected));
86+ EXPECT_THAT (p.request , IsProtoEqual (expected));
87+ return make_ready_future (make_status_or (TestProtoBucket ()));
88+ });
89+
90+ auto client = AsyncClient (mock);
91+ auto response = client
92+ .GetBucket (BucketName (" test-bucket" ),
93+ Options{}
94+ .set <TestOption<1 >>(" O1-function" )
95+ .set <TestOption<2 >>(" O2-function" ))
96+ .get ();
97+ ASSERT_STATUS_OK (response);
98+ EXPECT_THAT (*response, IsProtoEqual (TestProtoBucket ()));
99+ }
100+
101+ TEST (AsyncClient, GetBucket2) {
102+ auto constexpr kExpectedRequest = R"pb(
103+ name: "projects/_/buckets/test-bucket"
104+ )pb" ;
105+ auto mock = std::make_shared<MockAsyncConnection>();
106+ EXPECT_CALL (*mock, options)
107+ .WillRepeatedly (
108+ Return (Options{}.set <TestOption<0 >>(" O0" ).set <TestOption<1 >>(" O1" )));
109+
110+ EXPECT_CALL (*mock, GetBucket)
111+ .WillOnce ([&](AsyncConnection::GetBucketParams const & p) {
112+ EXPECT_THAT (p.options .get <TestOption<0 >>(), " O0" );
113+ EXPECT_THAT (p.options .get <TestOption<1 >>(), " O1-function" );
114+ EXPECT_THAT (p.options .get <TestOption<2 >>(), " O2-function" );
115+ auto expected = google::storage::v2::GetBucketRequest{};
116+ EXPECT_TRUE (TextFormat::ParseFromString (kExpectedRequest , &expected));
117+ EXPECT_THAT (p.request , IsProtoEqual (expected));
118+ return make_ready_future (make_status_or (TestProtoBucket ()));
119+ });
120+
121+ auto request = google::storage::v2::GetBucketRequest{};
122+ request.set_name (" projects/_/buckets/test-bucket" );
123+ auto client = AsyncClient (mock);
124+ auto response =
125+ client
126+ .GetBucket (std::move (request), Options{}
127+ .set <TestOption<1 >>(" O1-function" )
128+ .set <TestOption<2 >>(" O2-function" ))
129+ .get ();
130+ ASSERT_STATUS_OK (response);
131+ EXPECT_THAT (*response, IsProtoEqual (TestProtoBucket ()));
132+ }
133+
64134TEST (AsyncClient, InsertObject1) {
65135 auto constexpr kExpectedRequest = R"pb(
66136 write_object_spec {
0 commit comments