@@ -59,6 +59,13 @@ class VersionedLayerClientGetDataTest : public ::testing::Test {
59
59
return " /query/v1/catalogs/" + hrn + " /layers/" + layer + " /partitions" ;
60
60
}
61
61
62
+ std::string GenerateGetDataPath (const std::string& hrn,
63
+ const std::string& layer,
64
+ const std::string& data_handle) {
65
+ return " /blob/v1/catalogs/" + hrn + " /layers/" + layer + " /data/" +
66
+ data_handle;
67
+ }
68
+
62
69
std::shared_ptr<olp::client::OlpClientSettings> settings_;
63
70
std::shared_ptr<mockserver::MockServerHelper> mock_server_client_;
64
71
};
@@ -229,4 +236,79 @@ TEST_F(VersionedLayerClientGetDataTest, GetDataWithPartitionIdVersion2) {
229
236
EXPECT_TRUE (mock_server_client_->Verify ());
230
237
}
231
238
239
+ TEST_F (VersionedLayerClientGetDataTest,
240
+ GetDataFromPartitionLatestVersionAsync) {
241
+ const olp::client::HRN kHrn (kTestHrn );
242
+ const auto kPartitionName = " 269" ;
243
+ const std::string tile_data =
244
+ mockserver::ReadDefaultResponses::GenerateData ();
245
+
246
+ auto partition = mockserver::ReadDefaultResponses::GeneratePartitionResponse (
247
+ kPartitionName );
248
+ auto data_handle = partition.GetDataHandle ();
249
+ olp::dataservice::read::model::Partitions partitions;
250
+ partitions.SetPartitions ({partition});
251
+
252
+ {
253
+ mock_server_client_->MockAuth ();
254
+ mock_server_client_->MockLookupResourceApiResponse (
255
+ mockserver::ApiDefaultResponses::GenerateResourceApisResponse (
256
+ kTestHrn ));
257
+ mock_server_client_->MockGetVersionResponse (
258
+ mockserver::ReadDefaultResponses::GenerateVersionResponse (kVersion ));
259
+ mock_server_client_->MockGetResponse (
260
+ partitions, GenerateGetPartitionsPath (kTestHrn , kLayer ));
261
+ mock_server_client_->MockGetResponse (kLayer , data_handle, tile_data);
262
+ }
263
+
264
+ olp::dataservice::read::VersionedLayerClient client (kHrn , kLayer , boost::none,
265
+ *settings_);
266
+
267
+ std::promise<olp::dataservice::read::DataResponse> promise;
268
+ std::future<olp::dataservice::read::DataResponse> future =
269
+ promise.get_future ();
270
+
271
+ auto token = client.GetData (
272
+ olp::dataservice::read::DataRequest ().WithPartitionId (kPartitionName ),
273
+ [&promise](olp::dataservice::read::DataResponse response) {
274
+ promise.set_value (response);
275
+ });
276
+
277
+ auto response = future.get ();
278
+ auto result = response.GetResult ();
279
+
280
+ ASSERT_TRUE (response.IsSuccessful ());
281
+ ASSERT_EQ (result->size (), tile_data.size ());
282
+ EXPECT_TRUE (std::equal (tile_data.begin (), tile_data.end (), result->begin ()));
283
+ EXPECT_TRUE (mock_server_client_->Verify ());
284
+ }
285
+
286
+ TEST_F (VersionedLayerClientGetDataTest, GetDataWithInvalidDataHandle) {
287
+ const olp::client::HRN kHrn (kTestHrn );
288
+ constexpr auto kDataHandle = " invalidDataHandle" ;
289
+
290
+ {
291
+ mock_server_client_->MockAuth ();
292
+ mock_server_client_->MockLookupResourceApiResponse (
293
+ mockserver::ApiDefaultResponses::GenerateResourceApisResponse (
294
+ kTestHrn ));
295
+ mock_server_client_->MockGetError (
296
+ {olp::http::HttpStatusCode::NOT_FOUND, " Not found" },
297
+ GenerateGetDataPath (kTestHrn , kLayer , kDataHandle ));
298
+ }
299
+
300
+ olp::dataservice::read::VersionedLayerClient client (kHrn , kLayer , boost::none,
301
+ *settings_);
302
+
303
+ auto request = olp::dataservice::read::DataRequest ();
304
+ request.WithDataHandle (kDataHandle );
305
+ auto future = client.GetData (request).GetFuture ();
306
+ auto response = future.get ();
307
+
308
+ ASSERT_FALSE (response.IsSuccessful ());
309
+ ASSERT_EQ (olp::http::HttpStatusCode::NOT_FOUND,
310
+ response.GetError ().GetHttpStatusCode ());
311
+ EXPECT_TRUE (mock_server_client_->Verify ());
312
+ }
313
+
232
314
} // namespace
0 commit comments