| Index: chrome/browser/chromeos/drive/file_system_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/file_system_unittest.cc b/chrome/browser/chromeos/drive/file_system_unittest.cc
|
| index 49380ffc2f78f5e38476fac8094f1d52ff5a04fc..eefd9d86f5348162a3cf48bbcc06f1c06a8a8e3c 100644
|
| --- a/chrome/browser/chromeos/drive/file_system_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/file_system_unittest.cc
|
| @@ -23,6 +23,7 @@
|
| #include "chrome/browser/chromeos/drive/job_scheduler.h"
|
| #include "chrome/browser/chromeos/drive/sync_client.h"
|
| #include "chrome/browser/chromeos/drive/test_util.h"
|
| +#include "chrome/browser/drive/drive_api_util.h"
|
| #include "chrome/browser/drive/event_logger.h"
|
| #include "chrome/browser/drive/fake_drive_service.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| @@ -313,6 +314,226 @@ class FileSystemTest : public testing::Test {
|
| scoped_ptr<FileSystem> file_system_;
|
| };
|
|
|
| +TEST_F(FileSystemTest, Copy) {
|
| + base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
|
| + base::FilePath dest_file_path(FILE_PATH_LITERAL("drive/root/Copied.txt"));
|
| + EXPECT_TRUE(GetResourceEntrySync(src_file_path));
|
| + EXPECT_FALSE(GetResourceEntrySync(dest_file_path));
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->Copy(src_file_path,
|
| + dest_file_path,
|
| + false, // preserve_last_modified,
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // Entry is added on the server.
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(dest_file_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ(entry->title(), resource_entry->title());
|
| + EXPECT_TRUE(resource_entry->is_file());
|
| +}
|
| +
|
| +TEST_F(FileSystemTest, Move) {
|
| + base::FilePath src_file_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
|
| + base::FilePath dest_file_path(
|
| + FILE_PATH_LITERAL("drive/root/Directory 1/Moved.txt"));
|
| + EXPECT_TRUE(GetResourceEntrySync(src_file_path));
|
| + EXPECT_FALSE(GetResourceEntrySync(dest_file_path));
|
| + scoped_ptr<ResourceEntry> parent =
|
| + GetResourceEntrySync(dest_file_path.DirName());
|
| + ASSERT_TRUE(parent);
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->Move(src_file_path,
|
| + dest_file_path,
|
| + false, // preserve_last_modified,
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // Entry is moved on the server.
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(dest_file_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ(entry->title(), resource_entry->title());
|
| +
|
| + const google_apis::Link* parent_link =
|
| + resource_entry->GetLinkByType(google_apis::Link::LINK_PARENT);
|
| + ASSERT_TRUE(parent_link);
|
| + EXPECT_EQ(parent->resource_id(),
|
| + util::ExtractResourceIdFromUrl(parent_link->href()));
|
| +}
|
| +
|
| +TEST_F(FileSystemTest, Remove) {
|
| + base::FilePath file_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(file_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->Remove(
|
| + file_path,
|
| + false, // is_resursive
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // Entry is removed on the server.
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_TRUE(resource_entry->deleted());
|
| +}
|
| +
|
| +TEST_F(FileSystemTest, CreateDirectory) {
|
| + base::FilePath directory_path(FILE_PATH_LITERAL("drive/root/New Directory"));
|
| + EXPECT_FALSE(GetResourceEntrySync(directory_path));
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->CreateDirectory(
|
| + directory_path,
|
| + true, // is_exclusive
|
| + false, // is_recursive
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // Directory is created on the server.
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(directory_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ(entry->title(), resource_entry->title());
|
| + EXPECT_TRUE(resource_entry->is_folder());
|
| +}
|
| +
|
| +TEST_F(FileSystemTest, CreateFile) {
|
| + base::FilePath file_path(FILE_PATH_LITERAL("drive/root/New File.txt"));
|
| + EXPECT_FALSE(GetResourceEntrySync(file_path));
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->CreateFile(
|
| + file_path,
|
| + true, // is_exclusive
|
| + "text/plain",
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // File is created on the server.
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(file_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ(entry->title(), resource_entry->title());
|
| + EXPECT_TRUE(resource_entry->is_file());
|
| +}
|
| +
|
| +TEST_F(FileSystemTest, TouchFile) {
|
| + base::FilePath file_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(file_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + base::Time last_accessed =
|
| + base::Time::FromInternalValue(entry->file_info().last_accessed()) +
|
| + base::TimeDelta::FromSeconds(1);
|
| + base::Time last_modified =
|
| + base::Time::FromInternalValue(entry->file_info().last_modified()) +
|
| + base::TimeDelta::FromSeconds(1);
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->TouchFile(
|
| + file_path,
|
| + last_accessed,
|
| + last_modified,
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // File is touched on the server.
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ(last_accessed, resource_entry->last_viewed_time());
|
| + EXPECT_EQ(last_modified, resource_entry->updated_time());
|
| +}
|
| +
|
| +TEST_F(FileSystemTest, TruncateFile) {
|
| + base::FilePath file_path(FILE_PATH_LITERAL("drive/root/File 1.txt"));
|
| + scoped_ptr<ResourceEntry> entry = GetResourceEntrySync(file_path);
|
| + ASSERT_TRUE(entry);
|
| +
|
| + const int64 kLength = entry->file_info().size() + 100;
|
| +
|
| + FileError error = FILE_ERROR_FAILED;
|
| + file_system_->TruncateFile(
|
| + file_path,
|
| + kLength,
|
| + google_apis::test_util::CreateCopyResultCallback(&error));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(FILE_ERROR_OK, error);
|
| +
|
| + // File is touched on the server.
|
| + google_apis::GDataErrorCode status = google_apis::GDATA_OTHER_ERROR;
|
| + scoped_ptr<google_apis::ResourceEntry> resource_entry;
|
| + fake_drive_service_->GetResourceEntry(
|
| + entry->resource_id(),
|
| + google_apis::test_util::CreateCopyResultCallback(&status,
|
| + &resource_entry));
|
| + test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, status);
|
| + ASSERT_TRUE(resource_entry);
|
| + EXPECT_EQ(kLength, resource_entry->file_size());
|
| +}
|
| +
|
| TEST_F(FileSystemTest, DuplicatedAsyncInitialization) {
|
| base::RunLoop loop;
|
|
|
|
|