| Index: chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc (revision 168559)
|
| +++ chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc (working copy)
|
| @@ -15,7 +15,6 @@
|
| #include "base/threading/sequenced_worker_pool.h"
|
| #include "chrome/browser/chromeos/drive/drive.pb.h"
|
| #include "chrome/browser/chromeos/drive/drive_cache.h"
|
| -#include "chrome/browser/chromeos/drive/drive_files.h"
|
| #include "chrome/browser/chromeos/drive/drive_test_util.h"
|
| #include "chrome/browser/google_apis/time_util.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| @@ -30,11 +29,16 @@
|
| const char kResumableCreateMediaUrl[] = "http://resumable-create-media/";
|
|
|
| // Callback for DriveResourceMetadata::InitFromDB.
|
| -void InitFromDBCallback(DriveFileError expected_error,
|
| - DriveFileError actual_error) {
|
| - EXPECT_EQ(expected_error, actual_error);
|
| +void CopyResultsFromInitFromDBCallback(DriveFileError* expected_error,
|
| + DriveFileError actual_error) {
|
| + *expected_error = actual_error;
|
| }
|
|
|
| +void OnGetChildDirectories(std::set<FilePath>* out_changed_directories,
|
| + const std::set<FilePath>& in_changed_directories) {
|
| + *out_changed_directories = in_changed_directories;
|
| +}
|
| +
|
| } // namespace
|
|
|
| class DriveResourceMetadataTest : public testing::Test {
|
| @@ -42,6 +46,16 @@
|
| DriveResourceMetadataTest();
|
|
|
| protected:
|
| + // Creates a DriveEntryProto.
|
| + DriveEntryProto CreateDriveEntryProto(int sequence_id,
|
| + bool is_directory,
|
| + const std::string& parent_resource_id);
|
| +
|
| + // Adds a DriveEntryProto to the metadata tree. Returns true on success.
|
| + bool AddDriveEntryProto(int sequence_id,
|
| + bool is_directory,
|
| + const std::string& parent_resource_id);
|
| +
|
| DriveResourceMetadata resource_metadata_;
|
|
|
| private:
|
| @@ -58,14 +72,6 @@
|
| // drive/dir1/dir3/file10
|
| void Init();
|
|
|
| - // Add a directory to |parent| and return that directory. The name and
|
| - // resource_id are determined by the incrementing counter |sequence_id|.
|
| - DriveDirectory* AddDirectory(DriveDirectory* parent, int sequence_id);
|
| -
|
| - // Add a file to |parent| and return that file. The name and
|
| - // resource_id are determined by the incrementing counter |sequence_id|.
|
| - DriveFile* AddFile(DriveDirectory* parent, int sequence_id);
|
| -
|
| MessageLoopForUI message_loop_;
|
| content::TestBrowserThread ui_thread_;
|
| };
|
| @@ -80,46 +86,64 @@
|
| kWAPIRootDirectoryResourceIdForTesting);
|
|
|
| int sequence_id = 1;
|
| - DriveDirectory* dir1 = AddDirectory(resource_metadata_.root(), sequence_id++);
|
| - DriveDirectory* dir2 = AddDirectory(resource_metadata_.root(), sequence_id++);
|
| - DriveDirectory* dir3 = AddDirectory(dir1, sequence_id++);
|
| + ASSERT_TRUE(AddDriveEntryProto(
|
| + sequence_id++, true, kWAPIRootDirectoryResourceIdForTesting));
|
| + ASSERT_TRUE(AddDriveEntryProto(
|
| + sequence_id++, true, kWAPIRootDirectoryResourceIdForTesting));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir1"));
|
|
|
| - AddFile(dir1, sequence_id++);
|
| - AddFile(dir1, sequence_id++);
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir1"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir1"));
|
|
|
| - AddFile(dir2, sequence_id++);
|
| - AddFile(dir2, sequence_id++);
|
| - AddFile(dir2, sequence_id++);
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir2"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir2"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir2"));
|
|
|
| - AddFile(dir3, sequence_id++);
|
| - AddFile(dir3, sequence_id++);
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir3"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, false, "resource_id:dir3"));
|
| }
|
|
|
| -DriveDirectory* DriveResourceMetadataTest::AddDirectory(DriveDirectory* parent,
|
| - int sequence_id) {
|
| - scoped_ptr<DriveDirectory> dir = resource_metadata_.CreateDriveDirectory();
|
| - const std::string dir_name = "dir" + base::IntToString(sequence_id);
|
| - const std::string resource_id = std::string("dir_resource_id:") + dir_name;
|
| - dir->set_title(dir_name);
|
| - dir->set_resource_id(resource_id);
|
| +DriveEntryProto DriveResourceMetadataTest::CreateDriveEntryProto(
|
| + int sequence_id,
|
| + bool is_directory,
|
| + const std::string& parent_resource_id) {
|
| + DriveEntryProto entry_proto;
|
| + const std::string sequence_id_str = base::IntToString(sequence_id);
|
| + const std::string title = (is_directory ? "dir" : "file") +
|
| + sequence_id_str;
|
| + const std::string resource_id = "resource_id:" + title;
|
| + entry_proto.set_title(title);
|
| + entry_proto.set_resource_id(resource_id);
|
| + entry_proto.set_parent_resource_id(parent_resource_id);
|
|
|
| - parent->AddEntry(dir.get());
|
| + PlatformFileInfoProto* file_info = entry_proto.mutable_file_info();
|
| + file_info->set_is_directory(is_directory);
|
|
|
| - return dir.release();
|
| + if (!is_directory) {
|
| + DriveFileSpecificInfo* file_specific_info =
|
| + entry_proto.mutable_file_specific_info();
|
| + file_info->set_size(sequence_id * 1024);
|
| + file_specific_info->set_file_md5(std::string("md5:") + title);
|
| + }
|
| + return entry_proto;
|
| }
|
|
|
| -DriveFile* DriveResourceMetadataTest::AddFile(DriveDirectory* parent,
|
| - int sequence_id) {
|
| - scoped_ptr<DriveFile> file = resource_metadata_.CreateDriveFile();
|
| - const std::string title = "file" + base::IntToString(sequence_id);
|
| - const std::string resource_id = std::string("file_resource_id:") + title;
|
| - file->set_title(title);
|
| - file->set_resource_id(resource_id);
|
| - file->set_file_md5(std::string("file_md5:") + title);
|
| +bool DriveResourceMetadataTest::AddDriveEntryProto(
|
| + int sequence_id,
|
| + bool is_directory,
|
| + const std::string& parent_resource_id) {
|
| + DriveEntryProto entry_proto = CreateDriveEntryProto(sequence_id,
|
| + is_directory,
|
| + parent_resource_id);
|
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| + FilePath drive_file_path;
|
|
|
| - parent->AddEntry(file.get());
|
| -
|
| - return file.release();
|
| + resource_metadata_.AddEntryToParent(
|
| + entry_proto,
|
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| + &error, &drive_file_path));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + return DRIVE_FILE_OK == error;
|
| }
|
|
|
| TEST_F(DriveResourceMetadataTest, VersionCheck) {
|
| @@ -160,17 +184,31 @@
|
|
|
| TEST_F(DriveResourceMetadataTest, GetEntryByResourceId_RootDirectory) {
|
| DriveResourceMetadata resource_metadata;
|
| +
|
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| + FilePath drive_file_path;
|
| + scoped_ptr<DriveEntryProto> entry_proto;
|
| +
|
| // Look up the root directory by its resource ID.
|
| - DriveEntry* entry = resource_metadata.GetEntryByResourceId(
|
| - kWAPIRootDirectoryResourceId);
|
| - ASSERT_FALSE(entry);
|
| + resource_metadata.GetEntryInfoByResourceId(
|
| + kWAPIRootDirectoryResourceIdForTesting,
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| + &error, &drive_file_path, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + ASSERT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
|
| +
|
| // Initialize root and look it up again.
|
| resource_metadata.InitializeRootEntry(kWAPIRootDirectoryResourceIdForTesting);
|
| - entry = resource_metadata.GetEntryByResourceId(
|
| - kWAPIRootDirectoryResourceIdForTesting);
|
| - ASSERT_TRUE(entry);
|
|
|
| - EXPECT_EQ(kWAPIRootDirectoryResourceIdForTesting, entry->resource_id());
|
| + resource_metadata_.GetEntryInfoByResourceId(
|
| + kWAPIRootDirectoryResourceIdForTesting,
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| + &error, &drive_file_path, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive"), drive_file_path);
|
| + EXPECT_EQ(kWAPIRootDirectoryResourceIdForTesting, entry_proto->resource_id());
|
| }
|
|
|
| TEST_F(DriveResourceMetadataTest, GetEntryInfoByResourceId) {
|
| @@ -179,7 +217,7 @@
|
| FilePath drive_file_path;
|
| scoped_ptr<DriveEntryProto> entry_proto;
|
| resource_metadata_.GetEntryInfoByResourceId(
|
| - "file_resource_id:file4",
|
| + "resource_id:file4",
|
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| &error, &drive_file_path, &entry_proto));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| @@ -343,9 +381,13 @@
|
| AppendASCII("meta").AppendASCII("resource_metadata.db"));
|
| // InitFromDB should fail with DRIVE_FILE_ERROR_NOT_FOUND since the db
|
| // doesn't exist.
|
| - resource_metadata_.InitFromDB(db_path, blocking_task_runner,
|
| - base::Bind(&InitFromDBCallback, DRIVE_FILE_ERROR_NOT_FOUND));
|
| + DriveFileError db_error;
|
| + resource_metadata_.InitFromDB(
|
| + db_path,
|
| + blocking_task_runner,
|
| + base::Bind(&CopyResultsFromInitFromDBCallback, &db_error));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| + ASSERT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, db_error);
|
|
|
| // Create a file system and write it to disk.
|
| // We cannot call SaveToDB without first having called InitFromDB because
|
| @@ -355,17 +397,23 @@
|
| google_apis::test_util::RunBlockingPoolTask();
|
|
|
| // InitFromDB should fail with DRIVE_FILE_ERROR_IN_USE.
|
| - resource_metadata_.InitFromDB(db_path, blocking_task_runner,
|
| - base::Bind(&InitFromDBCallback, DRIVE_FILE_ERROR_IN_USE));
|
| + resource_metadata_.InitFromDB(
|
| + db_path,
|
| + blocking_task_runner,
|
| + base::Bind(&CopyResultsFromInitFromDBCallback, &db_error));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| + ASSERT_EQ(DRIVE_FILE_ERROR_IN_USE, db_error);
|
|
|
| // InitFromDB should succeed.
|
| DriveResourceMetadata test_resource_metadata;
|
| test_resource_metadata.InitializeRootEntry(
|
| kWAPIRootDirectoryResourceIdForTesting);
|
| - test_resource_metadata.InitFromDB(db_path, blocking_task_runner,
|
| - base::Bind(&InitFromDBCallback, DRIVE_FILE_OK));
|
| + test_resource_metadata.InitFromDB(
|
| + db_path,
|
| + blocking_task_runner,
|
| + base::Bind(&CopyResultsFromInitFromDBCallback, &db_error));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| + ASSERT_EQ(DRIVE_FILE_OK, db_error);
|
|
|
| // Verify by checking for drive/dir2, which should have 3 children.
|
| DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| @@ -384,7 +432,7 @@
|
| // Make sure file9 is found.
|
| DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| FilePath drive_file_path;
|
| - const std::string file9_resource_id = "file_resource_id:file9";
|
| + const std::string file9_resource_id = "resource_id:file9";
|
| scoped_ptr<DriveEntryProto> entry_proto;
|
| resource_metadata_.GetEntryInfoByResourceId(
|
| file9_resource_id,
|
| @@ -415,7 +463,7 @@
|
| EXPECT_FALSE(entry_proto.get());
|
|
|
| // Look for dir3.
|
| - const std::string dir3_resource_id = "dir_resource_id:dir3";
|
| + const std::string dir3_resource_id = "resource_id:dir3";
|
| resource_metadata_.GetEntryInfoByResourceId(
|
| dir3_resource_id,
|
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| @@ -454,7 +502,7 @@
|
|
|
| // Try removing root. This should fail.
|
| resource_metadata_.RemoveEntryFromParent(
|
| - resource_metadata_.root()->resource_id(),
|
| + kWAPIRootDirectoryResourceIdForTesting,
|
| base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| &error, &drive_file_path));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| @@ -478,7 +526,7 @@
|
|
|
| // Look up the entry by its resource id and make sure it really moved.
|
| resource_metadata_.GetEntryInfoByResourceId(
|
| - "file_resource_id:file8",
|
| + "resource_id:file8",
|
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| &error, &drive_file_path, &entry_proto));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| @@ -537,7 +585,7 @@
|
|
|
| // Make sure file is still ok.
|
| resource_metadata_.GetEntryInfoByResourceId(
|
| - "file_resource_id:file8",
|
| + "resource_id:file8",
|
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| &error, &drive_file_path, &entry_proto));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| @@ -562,7 +610,7 @@
|
|
|
| // Lookup the file by resource id to make sure the file actually got renamed.
|
| resource_metadata_.GetEntryInfoByResourceId(
|
| - "file_resource_id:file8",
|
| + "resource_id:file8",
|
| base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| &error, &drive_file_path, &entry_proto));
|
| google_apis::test_util::RunBlockingPoolTask();
|
| @@ -600,6 +648,214 @@
|
| EXPECT_EQ(FilePath(), drive_file_path);
|
| }
|
|
|
| +TEST_F(DriveResourceMetadataTest, RefreshEntryProto) {
|
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| + FilePath drive_file_path;
|
| + scoped_ptr<DriveEntryProto> entry_proto;
|
| +
|
| + // Get file9.
|
| + resource_metadata_.GetEntryInfoByPath(
|
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"),
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
|
| + &error, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ("file9", entry_proto->base_name());
|
| + ASSERT_TRUE(!entry_proto->file_info().is_directory());
|
| + EXPECT_EQ("md5:file9", entry_proto->file_specific_info().file_md5());
|
| +
|
| + // Rename it and change the file size.
|
| + DriveEntryProto file_entry_proto(*entry_proto);
|
| + const std::string updated_md5("md5:updated");
|
| + file_entry_proto.mutable_file_specific_info()->set_file_md5(updated_md5);
|
| + file_entry_proto.set_title("file100");
|
| + entry_proto.reset();
|
| + resource_metadata_.RefreshEntryProto(
|
| + file_entry_proto,
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| + &error, &drive_file_path, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"),
|
| + drive_file_path);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ("file100", entry_proto->base_name());
|
| + ASSERT_TRUE(!entry_proto->file_info().is_directory());
|
| + EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5());
|
| +
|
| + // Make sure we get the same thing from GetEntryInfoByPath.
|
| + entry_proto.reset();
|
| + resource_metadata_.GetEntryInfoByPath(
|
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"),
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
|
| + &error, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ("file100", entry_proto->base_name());
|
| + ASSERT_TRUE(!entry_proto->file_info().is_directory());
|
| + EXPECT_EQ(updated_md5, entry_proto->file_specific_info().file_md5());
|
| +
|
| + // Get dir2.
|
| + entry_proto.reset();
|
| + resource_metadata_.GetEntryInfoByPath(
|
| + FilePath::FromUTF8Unsafe("drive/dir2"),
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
|
| + &error, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ("dir2", entry_proto->base_name());
|
| + ASSERT_TRUE(entry_proto->file_info().is_directory());
|
| +
|
| + // Change the name to dir100 and change the parent to drive/dir1/dir3.
|
| + DriveEntryProto dir_entry_proto(*entry_proto);
|
| + dir_entry_proto.set_title("dir100");
|
| + dir_entry_proto.set_parent_resource_id("resource_id:dir3");
|
| + entry_proto.reset();
|
| + resource_metadata_.RefreshEntryProto(
|
| + dir_entry_proto,
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoWithFilePathCallback,
|
| + &error, &drive_file_path, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100"),
|
| + drive_file_path);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ("dir100", entry_proto->base_name());
|
| + EXPECT_TRUE(entry_proto->file_info().is_directory());
|
| + EXPECT_EQ("resource_id:dir2", entry_proto->resource_id());
|
| +
|
| + // Make sure the children have moved over. Test file6.
|
| + entry_proto.reset();
|
| + resource_metadata_.GetEntryInfoByPath(
|
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3/dir100/file6"),
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
|
| + &error, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + ASSERT_TRUE(entry_proto.get());
|
| + EXPECT_EQ("file6", entry_proto->base_name());
|
| +
|
| + // Make sure dir2 no longer exists.
|
| + resource_metadata_.GetEntryInfoByPath(
|
| + FilePath::FromUTF8Unsafe("drive/dir2"),
|
| + base::Bind(&test_util::CopyResultsFromGetEntryInfoCallback,
|
| + &error, &entry_proto));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
|
| + EXPECT_FALSE(entry_proto.get());
|
| +}
|
| +
|
| +TEST_F(DriveResourceMetadataTest, AddEntryToParent) {
|
| + int sequence_id = 100;
|
| + DriveEntryProto file_entry_proto = CreateDriveEntryProto(
|
| + sequence_id++, false, "resource_id:dir3");
|
| +
|
| + DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| + FilePath drive_file_path;
|
| +
|
| + // Add to dir3.
|
| + resource_metadata_.AddEntryToParent(
|
| + file_entry_proto,
|
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| + &error, &drive_file_path));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir3/file100"),
|
| + drive_file_path);
|
| +
|
| + // Adds to root when parent resource id is not specified.
|
| + DriveEntryProto file_entry_proto2 = CreateDriveEntryProto(
|
| + sequence_id++, false, "");
|
| +
|
| + resource_metadata_.AddEntryToParent(
|
| + file_entry_proto2,
|
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| + &error, &drive_file_path));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/file101"), drive_file_path);
|
| +
|
| + // Add a directory.
|
| + DriveEntryProto dir_entry_proto = CreateDriveEntryProto(
|
| + sequence_id++, true, "resource_id:dir1");
|
| +
|
| + resource_metadata_.AddEntryToParent(
|
| + dir_entry_proto,
|
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| + &error, &drive_file_path));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_OK, error);
|
| + EXPECT_EQ(FilePath::FromUTF8Unsafe("drive/dir1/dir102"), drive_file_path);
|
| +
|
| + // Add to an invalid parent.
|
| + DriveEntryProto file_entry_proto3 = CreateDriveEntryProto(
|
| + sequence_id++, false, "resource_id:invalid");
|
| +
|
| + resource_metadata_.AddEntryToParent(
|
| + file_entry_proto3,
|
| + base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| + &error, &drive_file_path));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(DRIVE_FILE_ERROR_NOT_FOUND, error);
|
| +}
|
| +
|
| +TEST_F(DriveResourceMetadataTest, GetChildDirectories) {
|
| + std::set<FilePath> changed_directories;
|
| +
|
| + // file9: not a directory, so no children.
|
| + resource_metadata_.GetChildDirectories("resource_id:file9",
|
| + base::Bind(&OnGetChildDirectories, &changed_directories));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_TRUE(changed_directories.empty());
|
| +
|
| + // dir2: no child directories.
|
| + resource_metadata_.GetChildDirectories("resource_id:dir2",
|
| + base::Bind(&OnGetChildDirectories, &changed_directories));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_TRUE(changed_directories.empty());
|
| +
|
| + // dir1: dir3 is the only child
|
| + resource_metadata_.GetChildDirectories("resource_id:dir1",
|
| + base::Bind(&OnGetChildDirectories, &changed_directories));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(1u, changed_directories.size());
|
| + EXPECT_EQ(1u, changed_directories.count(
|
| + FilePath::FromUTF8Unsafe("drive/dir1/dir3")));
|
| +
|
| + // Add a few more directories to make sure deeper nesting works.
|
| + // dir2/dir100
|
| + // dir2/dir101
|
| + // dir2/dir101/dir102
|
| + // dir2/dir101/dir103
|
| + // dir2/dir101/dir104
|
| + // dir2/dir101/dir102/dir105
|
| + // dir2/dir101/dir102/dir105/dir106
|
| + // dir2/dir101/dir102/dir105/dir106/dir107
|
| + int sequence_id = 100;
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir2"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir2"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir101"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir101"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir101"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir102"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir105"));
|
| + ASSERT_TRUE(AddDriveEntryProto(sequence_id++, true, "resource_id:dir106"));
|
| +
|
| + resource_metadata_.GetChildDirectories("resource_id:dir2",
|
| + base::Bind(&OnGetChildDirectories, &changed_directories));
|
| + google_apis::test_util::RunBlockingPoolTask();
|
| + EXPECT_EQ(8u, changed_directories.size());
|
| + EXPECT_EQ(1u, changed_directories.count(FilePath::FromUTF8Unsafe(
|
| + "drive/dir2/dir101")));
|
| + EXPECT_EQ(1u, changed_directories.count(FilePath::FromUTF8Unsafe(
|
| + "drive/dir2/dir101/dir104")));
|
| + EXPECT_EQ(1u, changed_directories.count(FilePath::FromUTF8Unsafe(
|
| + "drive/dir2/dir101/dir102/dir105/dir106/dir107")));
|
| +}
|
| +
|
| TEST_F(DriveResourceMetadataTest, TakeOverEntries) {
|
| DriveFileError error = DRIVE_FILE_ERROR_FAILED;
|
| FilePath drive_file_path;
|
| @@ -607,8 +863,8 @@
|
|
|
| // Move files from dir1 to dir2.
|
| resource_metadata_.TakeOverEntries(
|
| - "dir_resource_id:dir1",
|
| - "dir_resource_id:dir2",
|
| + "resource_id:dir1",
|
| + "resource_id:dir2",
|
| base::Bind(&test_util::CopyResultsFromFileMoveCallback,
|
| &error, &drive_file_path));
|
| google_apis::test_util::RunBlockingPoolTask();
|
|
|