Chromium Code Reviews| Index: chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc |
| diff --git a/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc b/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc |
| index 75066bc68ace909e2509850c306765b87becebdb..03d8abce8b1b7ca3ec42cc26316ac9034fbeafeb 100644 |
| --- a/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc |
| +++ b/chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc |
| @@ -1135,7 +1135,7 @@ TEST_F(GDataFileSystemTest, DuplicatedAsyncInitialization) { |
| &message_loop_); |
| EXPECT_CALL(*mock_doc_service_, GetAccountMetadata(_)).Times(1); |
| - EXPECT_CALL(*mock_doc_service_, GetDocuments(Eq(GURL()), _, _)).Times(1); |
| + EXPECT_CALL(*mock_doc_service_, GetDocuments(Eq(GURL()), _, _, _)).Times(1); |
| file_system_->ReadDirectoryByPathAsync( |
| FilePath(FILE_PATH_LITERAL("gdata")), callback); |
| @@ -3076,6 +3076,422 @@ TEST_F(GDataFileSystemTest, GetFileByResourceId_FromCache) { |
| callback_helper_->download_path_.value()); |
| } |
| +void ContentSearchCallback(MessageLoop* message_loop, |
|
satorux1
2012/05/03 17:58:34
function comment is missing.
please also move thi
tbarzic
2012/05/03 23:56:17
Done.
|
| + base::PlatformFileError error, |
| + scoped_ptr<GDataDirectoryProto> dir_proto) { |
| + ASSERT_EQ(base::PLATFORM_FILE_OK, error); |
| + ASSERT_TRUE(dir_proto.get() != NULL); |
| + |
| + // Search feed contains 2 entries. One file (SubDirectory File 1.txt) and one |
| + // directory (Directory 1). Entries generated from the fedd should have names |
| + // in format resource_id.actual_file_name. |
| + ASSERT_EQ(1, dir_proto->child_files_size()); |
| + EXPECT_EQ("file:2_file_resouce_id.SubDirectory File 1.txt", |
| + dir_proto->child_files(0).gdata_entry().file_name()); |
| + |
| + ASSERT_EQ(1, dir_proto->child_directories_size()); |
| + EXPECT_EQ("folder:1_folder_resource_id.Directory 1", |
| + dir_proto->child_directories(0).gdata_entry().file_name()); |
| + |
| + message_loop->Quit(); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + EXPECT_CALL(*mock_doc_service_, GetDocuments(Eq(GURL()), _, "foo", _)) |
| + .Times(1); |
| + |
| + ReadDirectoryCallback callback = base::Bind( |
| + &ContentSearchCallback, |
| + &message_loop_); |
| + |
| + file_system_->SearchContent("foo", callback); |
| + message_loop_.Run(); // Wait to get our result |
| + |
| + struct SearchResultPair { |
| + const char* search_path; |
| + const char* real_path; |
| + }; |
| + |
| + const SearchResultPair kSearchResultPairs[] = { |
| + { "gdata/.search/foo/file:2_file_resouce_id.SubDirectory File 1.txt", |
| + "gdata/Directory 1/SubDirectory File 1.txt" }, |
| + { "gdata/.search/foo/folder:1_folder_resource_id.Directory 1", |
| + "gdata/Directory 1" }, |
| + { "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "SubDirectory File 1.txt", |
| + "gdata/Directory 1/SubDirectory File 1.txt" } |
| + }; |
| + |
| + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kSearchResultPairs); i++) { |
|
satorux1
2012/05/03 17:58:34
why cannot you use arraysize()?
i++ -> ++i (as th
tbarzic
2012/05/03 23:56:17
struct SearchResultPair is defined in function.. w
|
| + FilePath search_file_path(FILE_PATH_LITERAL( |
| + kSearchResultPairs[i].search_path)); |
| + FilePath real_file_path(FILE_PATH_LITERAL( |
| + kSearchResultPairs[i].real_path)); |
| + |
| + GDataEntry* search_file_entry = FindEntry(search_file_path); |
| + ASSERT_TRUE(search_file_entry != NULL) |
| + << "Can't find " << search_file_path.value(); |
| + |
| + GDataEntry* real_file_entry = FindEntry(real_file_path); |
| + ASSERT_TRUE(real_file_entry != NULL) |
| + << "Can't find " << real_file_path.value(); |
| + |
| + EXPECT_EQ(search_file_entry, real_file_entry); |
| + } |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_Delete) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + EXPECT_CALL(*mock_doc_service_, DeleteDocument(_, _)).Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))))).Times(1); |
| + |
| + FilePath search_file_path(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/file:2_file_resouce_id.SubDirectory File 1.txt")); |
| + FilePath real_file_path(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + |
| + ASSERT_TRUE(FindEntry(real_file_path) != NULL); |
| + ASSERT_TRUE(FindEntry(search_file_path) != NULL); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Remove(search_file_path, false, callback); |
| + message_loop_.RunAllPending(); // Wait to get our result |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(real_file_path) == NULL); |
|
satorux1
2012/05/03 17:58:34
EXPECT_FALSE(FindEntry(real_file_path))
tbarzic
2012/05/03 23:56:17
Done.
|
| + EXPECT_TRUE(FindEntry(search_file_path) == NULL); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_RenameResult) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))))).Times(1); |
| + |
| + EXPECT_CALL(*mock_doc_service_, RenameResource( |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "SubDirectory File 1.txt.renamed", _)) |
| + .Times(1); |
| + |
| + FilePath source_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/file:2_file_resouce_id.SubDirectory File 1.txt")); |
| + FilePath source_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + |
| + FilePath renamed_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/" |
| + "file:2_file_resouce_id.SubDirectory File 1.txt.renamed")); |
| + FilePath renamed_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt.renamed")); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Move(source_path_search, renamed_path_search, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(source_path_real) == NULL); |
| + EXPECT_TRUE(FindEntry(source_path_search) == NULL); |
| + |
| + EXPECT_TRUE(FindEntry(renamed_path_real) != NULL); |
| + EXPECT_TRUE(FindEntry(renamed_path_search) != NULL); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_Move) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + // Setup directory observer mocks. |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))))).Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/Sub Directory Folder"))))) |
| + .Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata"))))).Times(1); |
| + |
| + // Setup documents service mocks. |
| + EXPECT_CALL(*mock_doc_service_, RenameResource( |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "SubDirectory File 1.txt.dest", _)) |
| + .Times(1); |
| + EXPECT_CALL(*mock_doc_service_, RemoveResourceFromDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "file:2_file_resouce_id", _)) |
| + .Times(1); |
| + EXPECT_CALL(*mock_doc_service_, AddResourceToDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), _)) |
| + .Times(1); |
| + |
| + // Start the test. |
| + FilePath source_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "SubDirectory File 1.txt")); |
| + FilePath source_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + |
| + FilePath destination_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "Sub Directory Folder/SubDirectory File 1.txt.dest")); |
| + FilePath destination_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/Sub Directory Folder/SubDirectory File 1.txt.dest")); |
| + |
| + ASSERT_TRUE(FindEntry(source_path_search) != NULL); |
| + ASSERT_TRUE(FindEntry(source_path_real) != NULL); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Move(source_path_search, destination_path_search, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(source_path_search) == NULL); |
| + EXPECT_TRUE(FindEntry(source_path_real) == NULL); |
| + |
| + EXPECT_TRUE(FindEntry(destination_path_search) != NULL); |
| + EXPECT_TRUE(FindEntry(destination_path_real) != NULL); |
| +} |
| + |
| +// Move file to gdata file system from search result directory. |
| +TEST_F(GDataFileSystemTest, ContentSearch_MoveToGData) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + // Setup directory observer mocks. |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))))).Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/Sub Directory Folder"))))) |
| + .Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata"))))).Times(1); |
| + |
| + // Setup documents service mocks. |
| + EXPECT_CALL(*mock_doc_service_, RenameResource( |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "SubDirectory File 1.txt.dest", _)) |
| + .Times(1); |
| + EXPECT_CALL(*mock_doc_service_, RemoveResourceFromDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "file:2_file_resouce_id", _)) |
| + .Times(1); |
| + EXPECT_CALL(*mock_doc_service_, AddResourceToDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), _)) |
| + .Times(1); |
| + |
| + // Statr the test. |
| + FilePath source_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "SubDirectory File 1.txt")); |
| + FilePath source_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + |
| + FilePath destination_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "Sub Directory Folder/SubDirectory File 1.txt.dest")); |
| + FilePath destination_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/Sub Directory Folder/SubDirectory File 1.txt.dest")); |
| + |
| + ASSERT_TRUE(FindEntry(source_path_search) != NULL); |
| + ASSERT_TRUE(FindEntry(source_path_real) != NULL); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Move(source_path_search, destination_path_real, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(source_path_search) == NULL); |
| + EXPECT_TRUE(FindEntry(source_path_real) == NULL); |
| + |
| + EXPECT_TRUE(FindEntry(destination_path_search) != NULL); |
| + EXPECT_TRUE(FindEntry(destination_path_real) != NULL); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_MoveToSearch) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + // Setup directory observer mocks. |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))))).Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/Sub Directory Folder"))))) |
| + .Times(1); |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata"))))).Times(1); |
| + |
| + // Setup documents service mocks. |
| + EXPECT_CALL(*mock_doc_service_, RenameResource( |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "SubDirectory File 1.txt.dest", _)) |
| + .Times(1); |
| + EXPECT_CALL(*mock_doc_service_, RemoveResourceFromDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), |
| + "file:2_file_resouce_id", _)) |
| + .Times(1); |
| + EXPECT_CALL(*mock_doc_service_, AddResourceToDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), |
| + Eq(GURL("https://dir1_file_link_self/file:2_file_resouce_id")), _)) |
| + .Times(1); |
| + |
| + // Statr the test. |
| + FilePath source_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "SubDirectory File 1.txt")); |
| + FilePath source_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + |
| + FilePath destination_path_search(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "Sub Directory Folder/SubDirectory File 1.txt.dest")); |
| + FilePath destination_path_real(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/Sub Directory Folder/SubDirectory File 1.txt.dest")); |
| + |
| + ASSERT_TRUE(FindEntry(source_path_search) != NULL); |
| + ASSERT_TRUE(FindEntry(source_path_real) != NULL); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Move(source_path_real, destination_path_search, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(source_path_search) == NULL); |
| + EXPECT_TRUE(FindEntry(source_path_real) == NULL); |
| + |
| + EXPECT_TRUE(FindEntry(destination_path_search) != NULL); |
| + EXPECT_TRUE(FindEntry(destination_path_real) != NULL); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_CopyToSearchDirectory) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + FilePath src_file_path(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + FilePath dest_file_path(FILE_PATH_LITERAL( |
| + "gdata/.search/Directory 1")); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Copy(src_file_path, dest_file_path, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_NE(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(src_file_path) != NULL); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_CopyToSearchResultDirectory) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + FilePath src_file_path(FILE_PATH_LITERAL( |
| + "gdata/Directory 1/SubDirectory File 1.txt")); |
| + FilePath dest_file_path(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/Directory 1")); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->Copy(src_file_path, dest_file_path, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, |
| + callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(src_file_path) != NULL); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_CreateDirInSearchResultDirectory) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + FilePath dest_file_path(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/New Folder")); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->CreateDirectory(dest_file_path, false, false, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, |
| + callback_helper_->last_error_); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_CreateDirInSearchDirectory) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + FilePath dest_file_path(FILE_PATH_LITERAL( |
| + "gdata/.search/New Folder")); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->CreateDirectory(dest_file_path, false, false, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_ERROR_INVALID_OPERATION, |
| + callback_helper_->last_error_); |
| +} |
| + |
| +TEST_F(GDataFileSystemTest, ContentSearch_CreateDirectory) { |
| + LoadRootFeedDocument("root_feed.json"); |
| + |
| + EXPECT_CALL(*mock_directory_observer_, OnDirectoryChanged( |
| + Eq(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))))).Times(1); |
| + EXPECT_CALL(*mock_doc_service_, CreateDirectory( |
| + Eq(GURL("https://1_folder_content_url/")), "FolderNew", _)).Times(1); |
| + |
| + FilePath search_dir_path(FILE_PATH_LITERAL( |
| + "gdata/.search/foo/folder:1_folder_resource_id.Directory 1/" |
| + "FolderNew")); |
| + FilePath real_dir_path(FILE_PATH_LITERAL("gdata/Directory 1/FolderNew")); |
| + |
| + EXPECT_TRUE(FindEntry(search_dir_path) == NULL); |
| + EXPECT_TRUE(FindEntry(real_dir_path) == NULL); |
| + |
| + FileOperationCallback callback = |
| + base::Bind(&CallbackHelper::FileOperationCallback, |
| + callback_helper_.get()); |
| + |
| + file_system_->CreateDirectory(search_dir_path, false, false, callback); |
| + message_loop_.RunAllPending(); |
| + |
| + EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_); |
| + |
| + EXPECT_TRUE(FindEntry(search_dir_path) != NULL); |
| + EXPECT_TRUE(FindEntry(real_dir_path) != NULL); |
| +} |
| TEST_F(GDataFileSystemTest, GetAvailableSpace) { |
| EXPECT_CALL(*mock_sync_client_, OnCacheInitialized()).Times(1); |