Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: chrome/browser/chromeos/gdata/gdata_file_system_unittest.cc

Issue 9662041: Implement copy and move operations within the same remote file system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <errno.h> 5 #include <errno.h>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 : public base::RefCountedThreadSafe<CallbackHelper> { 312 : public base::RefCountedThreadSafe<CallbackHelper> {
313 public: 313 public:
314 CallbackHelper() : last_error_(base::PLATFORM_FILE_OK) {} 314 CallbackHelper() : last_error_(base::PLATFORM_FILE_OK) {}
315 virtual ~CallbackHelper() {} 315 virtual ~CallbackHelper() {}
316 virtual void GetFileCallback(base::PlatformFileError error, 316 virtual void GetFileCallback(base::PlatformFileError error,
317 const FilePath& file_path) { 317 const FilePath& file_path) {
318 last_error_ = error; 318 last_error_ = error;
319 download_path_ = file_path; 319 download_path_ = file_path;
320 } 320 }
321 virtual void FileOperationCallback(base::PlatformFileError error) { 321 virtual void FileOperationCallback(base::PlatformFileError error) {
322 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
323
322 last_error_ = error; 324 last_error_ = error;
323 } 325 }
324 326
325 base::PlatformFileError last_error_; 327 base::PlatformFileError last_error_;
326 FilePath download_path_; 328 FilePath download_path_;
327 }; 329 };
328 330
329 MessageLoopForUI message_loop_; 331 MessageLoopForUI message_loop_;
330 content::TestBrowserThread ui_thread_; 332 content::TestBrowserThread ui_thread_;
331 scoped_ptr<TestingProfile> profile_; 333 scoped_ptr<TestingProfile> profile_;
(...skipping 16 matching lines...) Expand all
348 // Delegate used to find a directory element for file system updates. 350 // Delegate used to find a directory element for file system updates.
349 class MockFindFileDelegate : public gdata::FindFileDelegate { 351 class MockFindFileDelegate : public gdata::FindFileDelegate {
350 public: 352 public:
351 MockFindFileDelegate() { 353 MockFindFileDelegate() {
352 } 354 }
353 355
354 virtual ~MockFindFileDelegate() { 356 virtual ~MockFindFileDelegate() {
355 } 357 }
356 358
357 // gdata::FindFileDelegate overrides. 359 // gdata::FindFileDelegate overrides.
358 MOCK_METHOD1(OnFileFound, void(GDataFile*)); 360 MOCK_METHOD1(OnFileFound, void(GDataFile* file));
359 MOCK_METHOD2(OnDirectoryFound, void(const FilePath&, GDataDirectory* dir)); 361 MOCK_METHOD2(OnDirectoryFound, void(const FilePath&, GDataDirectory* dir));
360 MOCK_METHOD2(OnEnterDirectory, FindFileTraversalCommand( 362 MOCK_METHOD2(OnEnterDirectory, FindFileTraversalCommand(
361 const FilePath&, GDataDirectory* dir)); 363 const FilePath&, GDataDirectory* dir));
362 MOCK_METHOD1(OnError, void(base::PlatformFileError)); 364 MOCK_METHOD1(OnError, void(base::PlatformFileError));
363 }; 365 };
364 366
365 TEST_F(GDataFileSystemTest, SearchRootDirectory) { 367 TEST_F(GDataFileSystemTest, SearchRootDirectory) {
366 scoped_refptr<MockFindFileDelegate> mock_find_file_delegate = 368 scoped_refptr<MockFindFileDelegate> mock_find_file_delegate =
367 new MockFindFileDelegate(); 369 new MockFindFileDelegate();
368 370
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 LoadRootFeedDocument("root_feed.json"); 534 LoadRootFeedDocument("root_feed.json");
533 LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")), 535 LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
534 "subdir_feed.json"); 536 "subdir_feed.json");
535 537
536 FindAndTestFilePath(FilePath(FILE_PATH_LITERAL("gdata/File 1.txt"))); 538 FindAndTestFilePath(FilePath(FILE_PATH_LITERAL("gdata/File 1.txt")));
537 FindAndTestFilePath(FilePath(FILE_PATH_LITERAL("gdata/Directory 1"))); 539 FindAndTestFilePath(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")));
538 FindAndTestFilePath( 540 FindAndTestFilePath(
539 FilePath(FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt"))); 541 FilePath(FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt")));
540 } 542 }
541 543
544 TEST_F(GDataFileSystemTest, GetCopyMoveFileParams) {
545 LoadRootFeedDocument("root_feed.json");
546 LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
547 "subdir_feed.json");
548
549 // Create directory in root.
550 FilePath dir_path(FILE_PATH_LITERAL("gdata/New Folder 1"));
551 AddDirectoryFromFile(dir_path, "directory_entry_atom.json");
552
553 // Create directory in a sub dirrectory.
554 FilePath subdir_path(FILE_PATH_LITERAL("gdata/New Folder 1/New Folder 2"));
555 AddDirectoryFromFile(subdir_path, "directory_entry_atom.json");
556
557 // Non-existing file
558 GDataFileSystem::CopyMoveFileParams params;
559 EXPECT_FALSE(file_system_->GetCopyMoveFileParams(FilePath("gdata/Dummy"),
560 &params));
561 EXPECT_EQ("", params.self_url.spec());
562 EXPECT_EQ("", params.content_url.spec());
563 EXPECT_EQ("", params.resource_id);
564 EXPECT_EQ("", params.document_extension);
565 EXPECT_FALSE(params.is_directory);
566 EXPECT_FALSE(params.is_root_directory);
567 EXPECT_FALSE(params.is_hosted_document);
568
569 // Root directory
570 GDataFileSystem::CopyMoveFileParams root_params;
571 EXPECT_TRUE(file_system_->GetCopyMoveFileParams(FilePath("gdata"),
572 &root_params));
573 EXPECT_EQ("", root_params.self_url.spec());
574 EXPECT_EQ("", root_params.content_url.spec());
575 EXPECT_EQ("", root_params.resource_id);
576 EXPECT_EQ("", root_params.document_extension);
577 EXPECT_TRUE(root_params.is_directory);
578 EXPECT_TRUE(root_params.is_root_directory);
579 EXPECT_FALSE(root_params.is_hosted_document);
580
581 // Subdirectory
582 GDataFileSystem::CopyMoveFileParams subdir_params;
583 EXPECT_TRUE(file_system_->GetCopyMoveFileParams(FilePath("gdata/Directory 1"),
584 &subdir_params));
585 EXPECT_EQ("https://1_self_link/", subdir_params.self_url.spec());
586 EXPECT_EQ("https://1_folder_content_url/", subdir_params.content_url.spec());
587 EXPECT_EQ("folder:1_folder_resource_id", subdir_params.resource_id);
588 EXPECT_EQ("", subdir_params.document_extension);
589 EXPECT_TRUE(subdir_params.is_directory);
590 EXPECT_FALSE(subdir_params.is_root_directory);
591 EXPECT_FALSE(subdir_params.is_hosted_document);
592
593 // Regular file
594 GDataFileSystem::CopyMoveFileParams file_params;
595 EXPECT_TRUE(file_system_->GetCopyMoveFileParams(FilePath("gdata/File 1.txt"),
596 &file_params));
597 EXPECT_EQ("https://file_link_self/", file_params.self_url.spec());
598 EXPECT_EQ("https://file_content_url/", file_params.content_url.spec());
599 EXPECT_EQ("file:2_file_resource_id", file_params.resource_id);
600 EXPECT_EQ("", file_params.document_extension);
601 EXPECT_FALSE(file_params.is_directory);
602 EXPECT_FALSE(file_params.is_root_directory);
603 EXPECT_FALSE(file_params.is_hosted_document);
604
605 // Hosted document
606 GDataFileSystem::CopyMoveFileParams doc_params;
607 EXPECT_TRUE(file_system_->GetCopyMoveFileParams(
608 FilePath("gdata/Document 1.gdoc"), &doc_params));
609 EXPECT_EQ("https://3_document_self_link/", doc_params.self_url.spec());
610 EXPECT_EQ("https://3_document_content/", doc_params.content_url.spec());
611 EXPECT_EQ("document:5_document_resource_id", doc_params.resource_id);
612 EXPECT_EQ(".gdoc", doc_params.document_extension);
613 EXPECT_FALSE(doc_params.is_directory);
614 EXPECT_FALSE(doc_params.is_root_directory);
615 EXPECT_TRUE(doc_params.is_hosted_document);
616 }
617
618 TEST_F(GDataFileSystemTest, CopyNotExistingFile) {
619 FilePath src_file_path(FILE_PATH_LITERAL("gdata/Dummy file.txt"));
620 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Test.log"));
621
622 LoadRootFeedDocument("root_feed.json");
623
624 GDataFileBase* src_file = NULL;
625 EXPECT_TRUE((src_file = FindFile(src_file_path)) == NULL);
626
627 GDataFileSystem::FileOperationCallback callback =
628 base::Bind(&CallbackHelper::FileOperationCallback,
629 callback_helper_.get());
630
631 file_system_->Copy(src_file_path, dest_file_path, callback);
632 message_loop_.RunAllPending(); // Wait to get our result
633 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
634
635 EXPECT_TRUE(FindFile(src_file_path) == NULL);
636 EXPECT_TRUE(FindFile(dest_file_path) == NULL);
637 }
638
639 TEST_F(GDataFileSystemTest, CopyFileToNonExistingDirectory) {
640 FilePath src_file_path(FILE_PATH_LITERAL("gdata/File 1.txt"));
641 FilePath dest_parent_path(FILE_PATH_LITERAL("gdata/Dummy"));
642 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Dummy/Test.log"));
643
644 LoadRootFeedDocument("root_feed.json");
645
646 GDataFileBase* src_file = NULL;
647 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
648 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
649 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
650 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
651 EXPECT_FALSE(src_file->self_url().is_empty());
652
653 EXPECT_TRUE(FindFile(dest_parent_path) == NULL);
654
655 GDataFileSystem::FileOperationCallback callback =
656 base::Bind(&CallbackHelper::FileOperationCallback,
657 callback_helper_.get());
658
659 file_system_->Move(src_file_path, dest_file_path, callback);
660 message_loop_.RunAllPending(); // Wait to get our result.
661 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
662
663 EXPECT_EQ(src_file, FindFile(src_file_path));
664 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
665
666 EXPECT_TRUE(FindFile(dest_parent_path) == NULL);
667 EXPECT_TRUE(FindFile(dest_file_path) == NULL);
668 }
669
670 // Test the case where the parent of |dest_file_path| is a existing file,
671 // not a directory.
672 TEST_F(GDataFileSystemTest, CopyFileToInvalidPath) {
673 FilePath src_file_path(FILE_PATH_LITERAL("gdata/Document 1.gdoc"));
674 FilePath dest_parent_path(FILE_PATH_LITERAL("gdata/Duplicate Name.txt"));
675 FilePath dest_file_path(FILE_PATH_LITERAL(
676 "gdata/Duplicate Name.txt/Document 1.gdoc"));
677
678 LoadRootFeedDocument("root_feed.json");
679
680 GDataFileBase* src_file = NULL;
681 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
682 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
683 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
684 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
685 EXPECT_FALSE(src_file->self_url().is_empty());
686
687 GDataFileBase* dest_parent = NULL;
688 EXPECT_TRUE((dest_parent = FindFile(dest_parent_path)) != NULL);
689 EXPECT_TRUE(dest_parent->AsGDataFile() != NULL);
690
691 GDataFileSystem::FileOperationCallback callback =
692 base::Bind(&CallbackHelper::FileOperationCallback,
693 callback_helper_.get());
694
695 file_system_->Copy(src_file_path, dest_file_path, callback);
696 message_loop_.RunAllPending(); // Wait to get our result.
697 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY,
698 callback_helper_->last_error_);
699
700 EXPECT_EQ(src_file, FindFile(src_file_path));
701 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
702 EXPECT_EQ(dest_parent, FindFile(dest_parent_path));
703
704 EXPECT_TRUE(FindFile(dest_file_path) == NULL);
705 }
706
707 TEST_F(GDataFileSystemTest, RenameFile) {
708 FilePath src_file_path(
709 FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt"));
710 FilePath src_parent_path(FILE_PATH_LITERAL("gdata/Directory 1"));
711 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Directory 1/Test.log"));
712
713 LoadRootFeedDocument("root_feed.json");
714 LoadSubdirFeedDocument(src_parent_path, "subdir_feed.json");
715
716 GDataFileBase* src_file = NULL;
717 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
718 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
719 std::string src_file_resource = src_file->AsGDataFile()->resource_id();
720 EXPECT_EQ(src_file, FindFileByResource(src_file_resource));
721
722 EXPECT_CALL(*mock_doc_service_,
723 RenameResource(src_file->self_url(),
724 FILE_PATH_LITERAL("Test.log"), _));
725
726 GDataFileSystem::FileOperationCallback callback =
727 base::Bind(&CallbackHelper::FileOperationCallback,
728 callback_helper_.get());
729
730 file_system_->Move(src_file_path, dest_file_path, callback);
731 message_loop_.RunAllPending(); // Wait to get our result.
732 EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_);
733
734 EXPECT_TRUE(FindFile(src_file_path) == NULL);
735
736 GDataFileBase* dest_file = NULL;
737 EXPECT_TRUE((dest_file = FindFile(dest_file_path)) != NULL);
738 EXPECT_EQ(dest_file, FindFileByResource(src_file_resource));
739 EXPECT_EQ(src_file, dest_file);
740 }
741
742 TEST_F(GDataFileSystemTest, MoveFileFromRootToSubDirectory) {
743 FilePath src_file_path(FILE_PATH_LITERAL("gdata/File 1.txt"));
744 FilePath dest_parent_path(FILE_PATH_LITERAL("gdata/Directory 1"));
745 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Directory 1/Test.log"));
746
747 LoadRootFeedDocument("root_feed.json");
748 LoadSubdirFeedDocument(dest_parent_path, "subdir_feed.json");
749
750 GDataFileBase* src_file = NULL;
751 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
752 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
753 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
754 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
755 EXPECT_FALSE(src_file->self_url().is_empty());
756
757 GDataFileBase* dest_parent = NULL;
758 EXPECT_TRUE((dest_parent = FindFile(dest_parent_path)) != NULL);
759 EXPECT_TRUE(dest_parent->AsGDataDirectory() != NULL);
760 EXPECT_FALSE(dest_parent->content_url().is_empty());
761
762 EXPECT_CALL(*mock_doc_service_,
763 RenameResource(src_file->self_url(),
764 FILE_PATH_LITERAL("Test.log"), _));
765 EXPECT_CALL(*mock_doc_service_,
766 AddResourceToDirectory(dest_parent->content_url(),
767 src_file->self_url(), _));
768
769 GDataFileSystem::FileOperationCallback callback =
770 base::Bind(&CallbackHelper::FileOperationCallback,
771 callback_helper_.get());
772
773 file_system_->Move(src_file_path, dest_file_path, callback);
774 message_loop_.RunAllPending(); // Wait to get our result.
775 EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_);
776
777 EXPECT_TRUE(FindFile(src_file_path) == NULL);
778
779 GDataFileBase* dest_file = NULL;
780 EXPECT_TRUE((dest_file = FindFile(dest_file_path)) != NULL);
781 EXPECT_EQ(dest_file, FindFileByResource(src_file_path_resource));
782 EXPECT_EQ(src_file, dest_file);
783 }
784
785 TEST_F(GDataFileSystemTest, MoveFileFromSubDirectoryToRoot) {
786 FilePath src_parent_path(FILE_PATH_LITERAL("gdata/Directory 1"));
787 FilePath src_file_path(
788 FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt"));
789 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Test.log"));
790
791 LoadRootFeedDocument("root_feed.json");
792 LoadSubdirFeedDocument(src_parent_path, "subdir_feed.json");
793
794 GDataFileBase* src_file = NULL;
795 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
796 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
797 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
798 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
799 EXPECT_FALSE(src_file->self_url().is_empty());
800
801 GDataFileBase* src_parent = NULL;
802 EXPECT_TRUE((src_parent = FindFile(src_parent_path)) != NULL);
803 EXPECT_TRUE(src_parent->AsGDataDirectory() != NULL);
804 EXPECT_FALSE(src_parent->content_url().is_empty());
805
806 EXPECT_CALL(*mock_doc_service_,
807 RenameResource(src_file->self_url(),
808 FILE_PATH_LITERAL("Test.log"), _));
809 EXPECT_CALL(*mock_doc_service_,
810 RemoveResourceFromDirectory(src_parent->content_url(),
811 src_file->self_url(),
812 src_file_path_resource, _));
813
814 GDataFileSystem::FileOperationCallback callback =
815 base::Bind(&CallbackHelper::FileOperationCallback,
816 callback_helper_.get());
817
818 file_system_->Move(src_file_path, dest_file_path, callback);
819 message_loop_.RunAllPending(); // Wait to get our result.
820 EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_);
821
822 EXPECT_TRUE(FindFile(src_file_path) == NULL);
823
824 GDataFileBase* dest_file = NULL;
825 EXPECT_TRUE((dest_file = FindFile(dest_file_path)) != NULL);
826 EXPECT_EQ(dest_file, FindFileByResource(src_file_path_resource));
827 EXPECT_EQ(src_file, dest_file);
828 }
829
830 TEST_F(GDataFileSystemTest, MoveFileBetweenSubDirectories) {
831 FilePath src_parent_path(FILE_PATH_LITERAL("gdata/Directory 1"));
832 FilePath src_file_path(
833 FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt"));
834 FilePath dest_parent_path(FILE_PATH_LITERAL("gdata/New Folder 1"));
835 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/New Folder 1/Test.log"));
836 FilePath interim_file_path(FILE_PATH_LITERAL("gdata/Test.log"));
837
838 LoadRootFeedDocument("root_feed.json");
839 LoadSubdirFeedDocument(src_parent_path, "subdir_feed.json");
840 AddDirectoryFromFile(dest_parent_path, "directory_entry_atom.json");
841
842 GDataFileBase* src_file = NULL;
843 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
844 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
845 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
846 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
847 EXPECT_FALSE(src_file->self_url().is_empty());
848
849 GDataFileBase* src_parent = NULL;
850 EXPECT_TRUE((src_parent = FindFile(src_parent_path)) != NULL);
851 EXPECT_TRUE(src_parent->AsGDataDirectory() != NULL);
852 EXPECT_FALSE(src_parent->content_url().is_empty());
853
854 GDataFileBase* dest_parent = NULL;
855 EXPECT_TRUE((dest_parent = FindFile(dest_parent_path)) != NULL);
856 EXPECT_TRUE(dest_parent->AsGDataDirectory() != NULL);
857 EXPECT_FALSE(dest_parent->content_url().is_empty());
858
859 EXPECT_TRUE(FindFile(interim_file_path) == NULL);
860
861 EXPECT_CALL(*mock_doc_service_,
862 RenameResource(src_file->self_url(),
863 FILE_PATH_LITERAL("Test.log"), _));
864 EXPECT_CALL(*mock_doc_service_,
865 RemoveResourceFromDirectory(src_parent->content_url(),
866 src_file->self_url(),
867 src_file_path_resource, _));
868 EXPECT_CALL(*mock_doc_service_,
869 AddResourceToDirectory(dest_parent->content_url(),
870 src_file->self_url(), _));
871
872 GDataFileSystem::FileOperationCallback callback =
873 base::Bind(&CallbackHelper::FileOperationCallback,
874 callback_helper_.get());
875
876 file_system_->Move(src_file_path, dest_file_path, callback);
877 message_loop_.RunAllPending(); // Wait to get our result.
878 EXPECT_EQ(base::PLATFORM_FILE_OK, callback_helper_->last_error_);
879
880 EXPECT_TRUE(FindFile(src_file_path) == NULL);
881 EXPECT_TRUE(FindFile(interim_file_path) == NULL);
882
883 GDataFileBase* dest_file = NULL;
884 EXPECT_TRUE((dest_file = FindFile(dest_file_path)) != NULL);
885 EXPECT_EQ(dest_file, FindFileByResource(src_file_path_resource));
886 EXPECT_EQ(src_file, dest_file);
887 }
888
889 TEST_F(GDataFileSystemTest, MoveNotExistingFile) {
890 FilePath src_file_path(FILE_PATH_LITERAL("gdata/Dummy file.txt"));
891 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Test.log"));
892
893 LoadRootFeedDocument("root_feed.json");
894
895 GDataFileBase* src_file = NULL;
896 EXPECT_TRUE((src_file = FindFile(src_file_path)) == NULL);
897
898 GDataFileSystem::FileOperationCallback callback =
899 base::Bind(&CallbackHelper::FileOperationCallback,
900 callback_helper_.get());
901
902 file_system_->Move(src_file_path, dest_file_path, callback);
903 message_loop_.RunAllPending(); // Wait to get our result
904 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
905
906 EXPECT_TRUE(FindFile(src_file_path) == NULL);
907 EXPECT_TRUE(FindFile(dest_file_path) == NULL);
908 }
909
910 TEST_F(GDataFileSystemTest, MoveFileToNonExistingDirectory) {
911 FilePath src_file_path(FILE_PATH_LITERAL("gdata/File 1.txt"));
912 FilePath dest_parent_path(FILE_PATH_LITERAL("gdata/Dummy"));
913 FilePath dest_file_path(FILE_PATH_LITERAL("gdata/Dummy/Test.log"));
914
915 LoadRootFeedDocument("root_feed.json");
916
917 GDataFileBase* src_file = NULL;
918 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
919 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
920 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
921 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
922 EXPECT_FALSE(src_file->self_url().is_empty());
923
924 EXPECT_TRUE(FindFile(dest_parent_path) == NULL);
925
926 GDataFileSystem::FileOperationCallback callback =
927 base::Bind(&CallbackHelper::FileOperationCallback,
928 callback_helper_.get());
929
930 file_system_->Move(src_file_path, dest_file_path, callback);
931 message_loop_.RunAllPending(); // Wait to get our result.
932 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_FOUND, callback_helper_->last_error_);
933
934 EXPECT_EQ(src_file, FindFile(src_file_path));
935 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
936
937 EXPECT_TRUE(FindFile(dest_parent_path) == NULL);
938 EXPECT_TRUE(FindFile(dest_file_path) == NULL);
939 }
940
941 // Test the case where the parent of |dest_file_path| is a existing file,
942 // not a directory.
943 TEST_F(GDataFileSystemTest, MoveFileToInvalidPath) {
944 FilePath src_file_path(FILE_PATH_LITERAL("gdata/File 1.txt"));
945 FilePath dest_parent_path(FILE_PATH_LITERAL("gdata/Duplicate Name.txt"));
946 FilePath dest_file_path(FILE_PATH_LITERAL(
947 "gdata/Duplicate Name.txt/Test.log"));
948
949 LoadRootFeedDocument("root_feed.json");
950
951 GDataFileBase* src_file = NULL;
952 EXPECT_TRUE((src_file = FindFile(src_file_path)) != NULL);
953 EXPECT_TRUE(src_file->AsGDataFile() != NULL);
954 std::string src_file_path_resource = src_file->AsGDataFile()->resource_id();
955 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
956 EXPECT_FALSE(src_file->self_url().is_empty());
957
958 GDataFileBase* dest_parent = NULL;
959 EXPECT_TRUE((dest_parent = FindFile(dest_parent_path)) != NULL);
960 EXPECT_TRUE(dest_parent->AsGDataFile() != NULL);
961
962 GDataFileSystem::FileOperationCallback callback =
963 base::Bind(&CallbackHelper::FileOperationCallback,
964 callback_helper_.get());
965
966 file_system_->Move(src_file_path, dest_file_path, callback);
967 message_loop_.RunAllPending(); // Wait to get our result.
968 EXPECT_EQ(base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY,
969 callback_helper_->last_error_);
970
971 EXPECT_EQ(src_file, FindFile(src_file_path));
972 EXPECT_EQ(src_file, FindFileByResource(src_file_path_resource));
973 EXPECT_EQ(dest_parent, FindFile(dest_parent_path));
974
975 EXPECT_TRUE(FindFile(dest_file_path) == NULL);
976 }
977
542 TEST_F(GDataFileSystemTest, RemoveFiles) { 978 TEST_F(GDataFileSystemTest, RemoveFiles) {
543 LoadRootFeedDocument("root_feed.json"); 979 LoadRootFeedDocument("root_feed.json");
544 LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")), 980 LoadSubdirFeedDocument(FilePath(FILE_PATH_LITERAL("gdata/Directory 1")),
545 "subdir_feed.json"); 981 "subdir_feed.json");
546 982
547 FilePath nonexisting_file(FILE_PATH_LITERAL("gdata/Dummy file.txt")); 983 FilePath nonexisting_file(FILE_PATH_LITERAL("gdata/Dummy file.txt"));
548 FilePath file_in_root(FILE_PATH_LITERAL("gdata/File 1.txt")); 984 FilePath file_in_root(FILE_PATH_LITERAL("gdata/File 1.txt"));
549 FilePath dir_in_root(FILE_PATH_LITERAL("gdata/Directory 1")); 985 FilePath dir_in_root(FILE_PATH_LITERAL("gdata/Directory 1"));
550 FilePath file_in_subdir( 986 FilePath file_in_subdir(
551 FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt")); 987 FILE_PATH_LITERAL("gdata/Directory 1/SubDirectory File 1.txt"));
552 988
553 GDataFileBase* file = NULL; 989 GDataFileBase* file = NULL;
554 EXPECT_TRUE((file = FindFile(file_in_root)) != NULL); 990 EXPECT_TRUE((file = FindFile(file_in_root)) != NULL);
555 EXPECT_TRUE(file->AsGDataFile() != NULL); 991 EXPECT_TRUE(file->AsGDataFile() != NULL);
556 std::string file_in_root_resource = file->AsGDataFile()->resource(); 992 std::string file_in_root_resource = file->AsGDataFile()->resource_id();
557 EXPECT_EQ(file, FindFileByResource(file_in_root_resource)); 993 EXPECT_EQ(file, FindFileByResource(file_in_root_resource));
558 994
559 EXPECT_TRUE(FindFile(dir_in_root) != NULL); 995 EXPECT_TRUE(FindFile(dir_in_root) != NULL);
560 996
561 EXPECT_TRUE((file = FindFile(file_in_subdir)) != NULL); 997 EXPECT_TRUE((file = FindFile(file_in_subdir)) != NULL);
562 EXPECT_TRUE(file->AsGDataFile() != NULL); 998 EXPECT_TRUE(file->AsGDataFile() != NULL);
563 std::string file_in_subdir_resource = file->AsGDataFile()->resource(); 999 std::string file_in_subdir_resource = file->AsGDataFile()->resource_id();
564 EXPECT_EQ(file, FindFileByResource(file_in_subdir_resource)); 1000 EXPECT_EQ(file, FindFileByResource(file_in_subdir_resource));
565 1001
566 // Remove first file in root. 1002 // Remove first file in root.
567 EXPECT_TRUE(RemoveFile(file_in_root)); 1003 EXPECT_TRUE(RemoveFile(file_in_root));
568 EXPECT_TRUE(FindFile(file_in_root) == NULL); 1004 EXPECT_TRUE(FindFile(file_in_root) == NULL);
569 EXPECT_EQ(NULL, FindFileByResource(file_in_root_resource)); 1005 EXPECT_EQ(NULL, FindFileByResource(file_in_root_resource));
570 EXPECT_TRUE(FindFile(dir_in_root) != NULL); 1006 EXPECT_TRUE(FindFile(dir_in_root) != NULL);
571 EXPECT_TRUE((file = FindFile(file_in_subdir)) != NULL); 1007 EXPECT_TRUE((file = FindFile(file_in_subdir)) != NULL);
572 EXPECT_EQ(file, FindFileByResource(file_in_subdir_resource)); 1008 EXPECT_EQ(file, FindFileByResource(file_in_subdir_resource));
573 1009
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 file = file_info->AsGDataFile(); 1190 file = file_info->AsGDataFile();
755 ASSERT_TRUE(file != NULL); 1191 ASSERT_TRUE(file != NULL);
756 } 1192 }
757 1193
758 // A file that exists in GData but not in cache. 1194 // A file that exists in GData but not in cache.
759 FilePath cache_file_path = file_system_->GetFromCacheForPath(gdata_file_path); 1195 FilePath cache_file_path = file_system_->GetFromCacheForPath(gdata_file_path);
760 EXPECT_TRUE(cache_file_path.empty()); 1196 EXPECT_TRUE(cache_file_path.empty());
761 1197
762 // Store a file corresponding to resource and md5 of "gdata/File 1.txt" to 1198 // Store a file corresponding to resource and md5 of "gdata/File 1.txt" to
763 // cache. 1199 // cache.
764 TestStoreToCache(file->resource(), file->file_md5(), 1200 TestStoreToCache(file->resource_id(), file->file_md5(),
765 GetTestFilePath("root_feed.json")); 1201 GetTestFilePath("root_feed.json"));
766 1202
767 // Now the file should exist in cache. 1203 // Now the file should exist in cache.
768 cache_file_path = file_system_->GetFromCacheForPath(gdata_file_path); 1204 cache_file_path = file_system_->GetFromCacheForPath(gdata_file_path);
769 EXPECT_EQ(file_system_->GetCacheFilePath(file->resource(), file->file_md5()), 1205 EXPECT_EQ(file_system_->GetCacheFilePath(file->resource_id(),
1206 file->file_md5()),
770 cache_file_path); 1207 cache_file_path);
771 1208
772 // A file that doesn't exist in gdata. 1209 // A file that doesn't exist in gdata.
773 cache_file_path = file_system_->GetFromCacheForPath( 1210 cache_file_path = file_system_->GetFromCacheForPath(
774 FilePath(FILE_PATH_LITERAL("gdata/Nonexistent.txt"))); 1211 FilePath(FILE_PATH_LITERAL("gdata/Nonexistent.txt")));
775 EXPECT_TRUE(cache_file_path.empty()); 1212 EXPECT_TRUE(cache_file_path.empty());
776 } 1213 }
777 1214
778 // Create a directory through the document service 1215 // Create a directory through the document service
779 TEST_F(GDataFileSystemTest, CreateDirectoryWithService) { 1216 TEST_F(GDataFileSystemTest, CreateDirectoryWithService) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 1256
820 virtual void SetUp() OVERRIDE { 1257 virtual void SetUp() OVERRIDE {
821 profile_.reset(new TestingProfile); 1258 profile_.reset(new TestingProfile);
822 // TODO(kuan): Create some cache files to trigger scanning of cache dir, 1259 // TODO(kuan): Create some cache files to trigger scanning of cache dir,
823 // and write tests to check the cache map. 1260 // and write tests to check the cache map.
824 Init(profile_.get()); 1261 Init(profile_.get());
825 } 1262 }
826 }; 1263 };
827 1264
828 } // namespace gdata 1265 } // namespace gdata
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698