[unit test] Complete all providers unit tests #12
This commit is contained in:
@@ -698,6 +698,10 @@ static void get_file_fails_if_item_is_directory(const app_config &cfg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void get_file_list(const app_config &cfg, i_provider &provider) {
|
static void get_file_list(const app_config &cfg, i_provider &provider) {
|
||||||
|
fmt::println("testing|{}|{}",
|
||||||
|
app_config::get_provider_name(provider.get_provider_type()),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
api_file_list list{};
|
api_file_list list{};
|
||||||
std::string marker;
|
std::string marker;
|
||||||
EXPECT_EQ(api_error::success, provider.get_file_list(list, marker));
|
EXPECT_EQ(api_error::success, provider.get_file_list(list, marker));
|
||||||
@@ -724,6 +728,128 @@ static void get_file_list(const app_config &cfg, i_provider &provider) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void get_file_size(i_provider &provider) {
|
||||||
|
fmt::println("testing|{}|{}",
|
||||||
|
app_config::get_provider_name(provider.get_provider_type()),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
|
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||||
|
api_file_list list{};
|
||||||
|
std::string marker;
|
||||||
|
auto res = provider.get_file_list(list, marker);
|
||||||
|
ASSERT_EQ(res, api_error::success);
|
||||||
|
|
||||||
|
ASSERT_FALSE(list.empty());
|
||||||
|
|
||||||
|
std::uint64_t size{};
|
||||||
|
res = provider.get_file_size(list.front().api_path, size);
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
EXPECT_EQ(utils::encryption::encrypting_reader::calculate_encrypted_size(
|
||||||
|
7U, true),
|
||||||
|
size);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto &file = test::create_random_file(128U);
|
||||||
|
auto api_path =
|
||||||
|
fmt::format("/{}", utils::path::strip_to_file_name(file.get_path()));
|
||||||
|
|
||||||
|
stop_type stop_requested{false};
|
||||||
|
auto res = provider.upload_file(api_path, file.get_path(), stop_requested);
|
||||||
|
ASSERT_EQ(api_error::success, res);
|
||||||
|
|
||||||
|
std::uint64_t size{};
|
||||||
|
res = provider.get_file_size(api_path, size);
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
EXPECT_EQ(*file.size(), size);
|
||||||
|
|
||||||
|
res = provider.remove_file(api_path);
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void get_file_size_fails_if_path_not_found(i_provider &provider) {
|
||||||
|
fmt::println("testing|{}|{}",
|
||||||
|
app_config::get_provider_name(provider.get_provider_type()),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
|
std::uint64_t size{};
|
||||||
|
auto res = provider.get_file_size("/cow/moose/dog/chicken", size);
|
||||||
|
|
||||||
|
EXPECT_EQ(api_error::item_not_found, res);
|
||||||
|
EXPECT_EQ(0U, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void get_filesystem_item(i_provider &provider) {
|
||||||
|
fmt::println("testing|{}|{}",
|
||||||
|
app_config::get_provider_name(provider.get_provider_type()),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
|
if (provider.get_provider_type() == provider_type::encrypt) {
|
||||||
|
api_file_list list{};
|
||||||
|
std::string marker;
|
||||||
|
auto res = provider.get_file_list(list, marker);
|
||||||
|
ASSERT_EQ(api_error::success, res);
|
||||||
|
ASSERT_FALSE(list.empty());
|
||||||
|
|
||||||
|
auto api_path = list.front().api_path;
|
||||||
|
|
||||||
|
filesystem_item fsi{};
|
||||||
|
res = provider.get_filesystem_item(api_path, fsi);
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
|
||||||
|
EXPECT_FALSE(fsi.is_directory);
|
||||||
|
EXPECT_EQ(api_path, fsi.api_path);
|
||||||
|
|
||||||
|
std::uint64_t size{};
|
||||||
|
res = provider.get_file_size(api_path, size);
|
||||||
|
ASSERT_EQ(api_error::success, res);
|
||||||
|
EXPECT_EQ(size, fsi.file_size);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto &src = test::create_random_file(128U);
|
||||||
|
auto api_path =
|
||||||
|
fmt::format("/{}", utils::path::strip_to_file_name(src.get_path()));
|
||||||
|
|
||||||
|
stop_type stop_requested{false};
|
||||||
|
auto res = provider.upload_file(api_path, src.get_path(), stop_requested);
|
||||||
|
ASSERT_EQ(api_error::success, res);
|
||||||
|
|
||||||
|
filesystem_item fsi{};
|
||||||
|
res = provider.get_filesystem_item(api_path, fsi);
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
EXPECT_EQ(api_path, fsi.api_path);
|
||||||
|
EXPECT_FALSE(fsi.is_directory);
|
||||||
|
EXPECT_EQ(*src.size(), fsi.file_size);
|
||||||
|
|
||||||
|
res = provider.remove_file(api_path);
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void get_filesystem_item_root_is_directory(i_provider &provider) {
|
||||||
|
fmt::println("testing|{}|{}",
|
||||||
|
app_config::get_provider_name(provider.get_provider_type()),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
|
filesystem_item fsi{};
|
||||||
|
auto res = provider.get_filesystem_item("/", fsi);
|
||||||
|
|
||||||
|
EXPECT_EQ(api_error::success, res);
|
||||||
|
EXPECT_TRUE(fsi.is_directory);
|
||||||
|
EXPECT_EQ("/", fsi.api_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void get_filesystem_item_fails_if_path_not_found(i_provider &provider) {
|
||||||
|
fmt::println("testing|{}|{}",
|
||||||
|
app_config::get_provider_name(provider.get_provider_type()),
|
||||||
|
__FUNCTION__);
|
||||||
|
|
||||||
|
filesystem_item fsi{};
|
||||||
|
auto res = provider.get_filesystem_item("/cow/moose/dog/chicken", fsi);
|
||||||
|
EXPECT_EQ(api_error::item_not_found, res);
|
||||||
|
}
|
||||||
|
|
||||||
static void run_tests(const app_config &cfg, i_provider &provider) {
|
static void run_tests(const app_config &cfg, i_provider &provider) {
|
||||||
get_file_list(cfg, provider);
|
get_file_list(cfg, provider);
|
||||||
ASSERT_FALSE(::testing::Test::HasFailure());
|
ASSERT_FALSE(::testing::Test::HasFailure());
|
||||||
@@ -755,10 +881,15 @@ static void run_tests(const app_config &cfg, i_provider &provider) {
|
|||||||
get_file_fails_if_file_not_found(provider);
|
get_file_fails_if_file_not_found(provider);
|
||||||
get_file_fails_if_item_is_directory(cfg, provider);
|
get_file_fails_if_item_is_directory(cfg, provider);
|
||||||
|
|
||||||
// TODO need to test read when file size changes for encrypt provider
|
|
||||||
/* get_file_list(provider);
|
|
||||||
get_file_size(provider);
|
get_file_size(provider);
|
||||||
|
get_file_size_fails_if_path_not_found(provider);
|
||||||
|
|
||||||
get_filesystem_item(provider);
|
get_filesystem_item(provider);
|
||||||
|
get_filesystem_item_root_is_directory(provider);
|
||||||
|
get_filesystem_item_fails_if_path_not_found(provider);
|
||||||
|
|
||||||
|
// TODO need to test read when file size changes for encrypt provider
|
||||||
|
/*
|
||||||
get_filesystem_item_and_file(provider);
|
get_filesystem_item_and_file(provider);
|
||||||
get_filesystem_item_from_source_path(provider);
|
get_filesystem_item_from_source_path(provider);
|
||||||
get_item_meta(provider);
|
get_item_meta(provider);
|
||||||
@@ -825,7 +956,7 @@ TEST(providers_test, encrypt_provider) {
|
|||||||
event_system::instance().stop();
|
event_system::instance().stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(providers_test, s3_provider) {
|
TEST(providers_test, s3_provider_unencrypted) {
|
||||||
auto config_path =
|
auto config_path =
|
||||||
utils::path::combine(test::get_test_output_dir(), {"provider", "s3"});
|
utils::path::combine(test::get_test_output_dir(), {"provider", "s3"});
|
||||||
|
|
||||||
@@ -838,7 +969,54 @@ TEST(providers_test, s3_provider) {
|
|||||||
app_config src_cfg(
|
app_config src_cfg(
|
||||||
provider_type::s3,
|
provider_type::s3,
|
||||||
utils::path::combine(test::get_test_config_dir(), {"s3"}));
|
utils::path::combine(test::get_test_config_dir(), {"s3"}));
|
||||||
cfg.set_s3_config(src_cfg.get_s3_config());
|
auto s3_cfg = src_cfg.get_s3_config();
|
||||||
|
s3_cfg.encryption_token = "";
|
||||||
|
cfg.set_s3_config(s3_cfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_comm comm{cfg.get_s3_config()};
|
||||||
|
|
||||||
|
s3_provider provider{cfg, comm};
|
||||||
|
file_manager mgr(cfg, provider);
|
||||||
|
|
||||||
|
EXPECT_TRUE(provider.start(
|
||||||
|
[&provider](bool directory, api_file &file) -> api_error {
|
||||||
|
return provider_meta_handler(provider, directory, file);
|
||||||
|
},
|
||||||
|
&mgr));
|
||||||
|
|
||||||
|
mgr.start();
|
||||||
|
|
||||||
|
EXPECT_EQ(provider_type::s3, provider.get_provider_type());
|
||||||
|
EXPECT_FALSE(provider.is_read_only());
|
||||||
|
EXPECT_TRUE(provider.is_online());
|
||||||
|
EXPECT_FALSE(provider.is_rename_supported());
|
||||||
|
|
||||||
|
run_tests(cfg, provider);
|
||||||
|
|
||||||
|
provider.stop();
|
||||||
|
mgr.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
event_system::instance().stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(providers_test, s3_provider_encrypted) {
|
||||||
|
auto config_path =
|
||||||
|
utils::path::combine(test::get_test_output_dir(), {"provider", "s3"});
|
||||||
|
|
||||||
|
console_consumer consumer{};
|
||||||
|
event_system::instance().start();
|
||||||
|
|
||||||
|
{
|
||||||
|
app_config cfg(provider_type::s3, config_path);
|
||||||
|
{
|
||||||
|
app_config src_cfg(
|
||||||
|
provider_type::s3,
|
||||||
|
utils::path::combine(test::get_test_config_dir(), {"s3"}));
|
||||||
|
auto s3_cfg = src_cfg.get_s3_config();
|
||||||
|
s3_cfg.encryption_token = "cow_moose_doge_chicken";
|
||||||
|
cfg.set_s3_config(s3_cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
curl_comm comm{cfg.get_s3_config()};
|
curl_comm comm{cfg.get_s3_config()};
|
||||||
|
Reference in New Issue
Block a user