[bug] Rename file is broken for files that are existing #19
This commit is contained in:
@@ -23,49 +23,47 @@
|
||||
|
||||
#include "file_manager/file_manager.hpp"
|
||||
#include "mocks/mock_provider.hpp"
|
||||
#include "mocks/mock_upload_manager.hpp"
|
||||
#include "utils/event_capture.hpp"
|
||||
#include "utils/path.hpp"
|
||||
|
||||
namespace repertory {
|
||||
static constexpr const std::size_t test_chunk_size = 1024u;
|
||||
static constexpr const std::size_t test_chunk_size{1024U};
|
||||
|
||||
TEST(upload, can_upload_a_valid_file) {
|
||||
console_consumer c;
|
||||
console_consumer con;
|
||||
|
||||
event_system::instance().start();
|
||||
|
||||
const auto source_path = test::generate_test_file_name("upload_test");
|
||||
|
||||
mock_provider mp;
|
||||
mock_provider mock_prov;
|
||||
|
||||
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false));
|
||||
EXPECT_CALL(mock_prov, is_direct_only()).WillRepeatedly(Return(false));
|
||||
|
||||
filesystem_item fsi;
|
||||
fsi.api_path = "/test.txt";
|
||||
fsi.size = test_chunk_size * 4u;
|
||||
fsi.size = test_chunk_size * 4U;
|
||||
fsi.source_path = source_path;
|
||||
|
||||
event_consumer ec("file_upload_completed", [&fsi](const event &e) {
|
||||
const auto &ee = dynamic_cast<const file_upload_completed &>(e);
|
||||
event_consumer evt_com("file_upload_completed", [&fsi](const event &evt) {
|
||||
const auto &comp_evt = dynamic_cast<const file_upload_completed &>(evt);
|
||||
EXPECT_STREQ(fsi.api_path.c_str(),
|
||||
ee.get_api_path().get<std::string>().c_str());
|
||||
comp_evt.get_api_path().get<std::string>().c_str());
|
||||
EXPECT_STREQ(fsi.source_path.c_str(),
|
||||
ee.get_source().get<std::string>().c_str());
|
||||
EXPECT_STREQ("success", ee.get_result().get<std::string>().c_str());
|
||||
EXPECT_STREQ("0", ee.get_cancelled().get<std::string>().c_str());
|
||||
comp_evt.get_source().get<std::string>().c_str());
|
||||
EXPECT_STREQ("success", comp_evt.get_result().get<std::string>().c_str());
|
||||
EXPECT_STREQ("0", comp_evt.get_cancelled().get<std::string>().c_str());
|
||||
});
|
||||
|
||||
EXPECT_CALL(mp, upload_file(fsi.api_path, fsi.source_path, _))
|
||||
.WillOnce([&fsi](const std::string &, const std::string &,
|
||||
stop_type &stop_requested) -> api_error {
|
||||
EXPECT_CALL(mock_prov, upload_file(fsi.api_path, fsi.source_path, _))
|
||||
.WillOnce([](const std::string &, const std::string &,
|
||||
stop_type &stop_requested) -> api_error {
|
||||
EXPECT_FALSE(stop_requested);
|
||||
return api_error::success;
|
||||
});
|
||||
file_manager::upload upload(fsi, mp);
|
||||
file_manager::upload upload(fsi, mock_prov);
|
||||
|
||||
event_capture e({"file_upload_completed"});
|
||||
e.wait_for_empty();
|
||||
event_capture evt_cap({"file_upload_completed"});
|
||||
evt_cap.wait_for_empty();
|
||||
|
||||
EXPECT_EQ(api_error::success, upload.get_api_error());
|
||||
EXPECT_FALSE(upload.is_cancelled());
|
||||
@@ -74,109 +72,110 @@ TEST(upload, can_upload_a_valid_file) {
|
||||
}
|
||||
|
||||
TEST(upload, can_cancel_upload) {
|
||||
console_consumer c;
|
||||
console_consumer con;
|
||||
|
||||
event_system::instance().start();
|
||||
|
||||
const auto source_path = test::generate_test_file_name("upload_test");
|
||||
|
||||
mock_provider mp;
|
||||
mock_provider mock_provider;
|
||||
|
||||
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false));
|
||||
EXPECT_CALL(mock_provider, is_direct_only()).WillRepeatedly(Return(false));
|
||||
|
||||
filesystem_item fsi;
|
||||
fsi.api_path = "/test.txt";
|
||||
fsi.size = test_chunk_size * 4u;
|
||||
fsi.size = test_chunk_size * 4U;
|
||||
fsi.source_path = source_path;
|
||||
|
||||
event_consumer ec("file_upload_completed", [&fsi](const event &e) {
|
||||
const auto &ee = dynamic_cast<const file_upload_completed &>(e);
|
||||
event_consumer evt_con("file_upload_completed", [&fsi](const event &evt) {
|
||||
const auto &comp_evt = dynamic_cast<const file_upload_completed &>(evt);
|
||||
EXPECT_STREQ(fsi.api_path.c_str(),
|
||||
ee.get_api_path().get<std::string>().c_str());
|
||||
comp_evt.get_api_path().get<std::string>().c_str());
|
||||
EXPECT_STREQ(fsi.source_path.c_str(),
|
||||
ee.get_source().get<std::string>().c_str());
|
||||
EXPECT_STREQ("upload_stopped", ee.get_result().get<std::string>().c_str());
|
||||
EXPECT_STREQ("1", ee.get_cancelled().get<std::string>().c_str());
|
||||
comp_evt.get_source().get<std::string>().c_str());
|
||||
EXPECT_STREQ("comm_error",
|
||||
comp_evt.get_result().get<std::string>().c_str());
|
||||
EXPECT_STREQ("1", comp_evt.get_cancelled().get<std::string>().c_str());
|
||||
});
|
||||
|
||||
std::mutex mtx;
|
||||
std::condition_variable cv;
|
||||
std::condition_variable notify;
|
||||
|
||||
EXPECT_CALL(mp, upload_file(fsi.api_path, fsi.source_path, _))
|
||||
.WillOnce([&cv, &fsi, &mtx](const std::string &, const std::string &,
|
||||
stop_type &stop_requested) -> api_error {
|
||||
EXPECT_CALL(mock_provider, upload_file(fsi.api_path, fsi.source_path, _))
|
||||
.WillOnce([¬ify, &mtx](const std::string &, const std::string &,
|
||||
stop_type &stop_requested) -> api_error {
|
||||
EXPECT_FALSE(stop_requested);
|
||||
|
||||
unique_mutex_lock l(mtx);
|
||||
cv.notify_one();
|
||||
l.unlock();
|
||||
unique_mutex_lock lock(mtx);
|
||||
notify.notify_one();
|
||||
lock.unlock();
|
||||
|
||||
l.lock();
|
||||
cv.wait(l);
|
||||
l.unlock();
|
||||
lock.lock();
|
||||
notify.wait(lock);
|
||||
lock.unlock();
|
||||
|
||||
EXPECT_TRUE(stop_requested);
|
||||
|
||||
return api_error::upload_stopped;
|
||||
return api_error::comm_error;
|
||||
});
|
||||
|
||||
unique_mutex_lock l(mtx);
|
||||
file_manager::upload upload(fsi, mp);
|
||||
cv.wait(l);
|
||||
unique_mutex_lock lock(mtx);
|
||||
file_manager::upload upload(fsi, mock_provider);
|
||||
notify.wait(lock);
|
||||
|
||||
upload.cancel();
|
||||
|
||||
cv.notify_one();
|
||||
l.unlock();
|
||||
notify.notify_one();
|
||||
lock.unlock();
|
||||
|
||||
event_capture e({"file_upload_completed"});
|
||||
e.wait_for_empty();
|
||||
event_capture evt_cap({"file_upload_completed"});
|
||||
evt_cap.wait_for_empty();
|
||||
|
||||
EXPECT_EQ(api_error::upload_stopped, upload.get_api_error());
|
||||
EXPECT_EQ(api_error::comm_error, upload.get_api_error());
|
||||
EXPECT_TRUE(upload.is_cancelled());
|
||||
|
||||
event_system::instance().stop();
|
||||
}
|
||||
|
||||
TEST(upload, can_stop_upload) {
|
||||
console_consumer c;
|
||||
console_consumer con;
|
||||
|
||||
event_system::instance().start();
|
||||
|
||||
const auto source_path = test::generate_test_file_name("upload_test");
|
||||
|
||||
mock_provider mp;
|
||||
mock_provider mock_provider;
|
||||
|
||||
EXPECT_CALL(mp, is_direct_only()).WillRepeatedly(Return(false));
|
||||
EXPECT_CALL(mock_provider, is_direct_only()).WillRepeatedly(Return(false));
|
||||
|
||||
filesystem_item fsi;
|
||||
fsi.api_path = "/test.txt";
|
||||
fsi.size = test_chunk_size * 4u;
|
||||
fsi.size = test_chunk_size * 4U;
|
||||
fsi.source_path = source_path;
|
||||
|
||||
event_consumer ec("file_upload_completed", [&fsi](const event &e) {
|
||||
const auto &ee = dynamic_cast<const file_upload_completed &>(e);
|
||||
event_consumer evt_con("file_upload_completed", [&fsi](const event &evt) {
|
||||
const auto &evt_com = dynamic_cast<const file_upload_completed &>(evt);
|
||||
EXPECT_STREQ(fsi.api_path.c_str(),
|
||||
ee.get_api_path().get<std::string>().c_str());
|
||||
evt_com.get_api_path().get<std::string>().c_str());
|
||||
EXPECT_STREQ(fsi.source_path.c_str(),
|
||||
ee.get_source().get<std::string>().c_str());
|
||||
EXPECT_STREQ("upload_stopped", ee.get_result().get<std::string>().c_str());
|
||||
EXPECT_STREQ("0", ee.get_cancelled().get<std::string>().c_str());
|
||||
evt_com.get_source().get<std::string>().c_str());
|
||||
EXPECT_STREQ("comm_error", evt_com.get_result().get<std::string>().c_str());
|
||||
EXPECT_STREQ("0", evt_com.get_cancelled().get<std::string>().c_str());
|
||||
});
|
||||
|
||||
EXPECT_CALL(mp, upload_file(fsi.api_path, fsi.source_path, _))
|
||||
.WillOnce([&fsi](const std::string &, const std::string &,
|
||||
stop_type &stop_requested) -> api_error {
|
||||
EXPECT_CALL(mock_provider, upload_file(fsi.api_path, fsi.source_path, _))
|
||||
.WillOnce([](const std::string &, const std::string &,
|
||||
stop_type &stop_requested) -> api_error {
|
||||
std::this_thread::sleep_for(3s);
|
||||
EXPECT_TRUE(stop_requested);
|
||||
return api_error::upload_stopped;
|
||||
return api_error::comm_error;
|
||||
});
|
||||
|
||||
event_capture e({"file_upload_completed"});
|
||||
event_capture evt_cap({"file_upload_completed"});
|
||||
|
||||
{ file_manager::upload upload(fsi, mp); }
|
||||
{ file_manager::upload upload(fsi, mock_provider); }
|
||||
|
||||
e.wait_for_empty();
|
||||
evt_cap.wait_for_empty();
|
||||
|
||||
event_system::instance().stop();
|
||||
}
|
||||
|
Reference in New Issue
Block a user