X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fchromeos%2Fdrive%2Ffile_system_util_unittest.cc;h=89db541d6cfe78dedaa9b0ba98065fb97644ae5b;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=b298a10c4e6416ce3b166e43d95523eca32a9ce3;hpb=4b53d56b8a1db20d4089f6d4f37126d43f907125;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/chromeos/drive/file_system_util_unittest.cc b/src/chrome/browser/chromeos/drive/file_system_util_unittest.cc index b298a10..89db541 100644 --- a/src/chrome/browser/chromeos/drive/file_system_util_unittest.cc +++ b/src/chrome/browser/chromeos/drive/file_system_util_unittest.cc @@ -7,12 +7,15 @@ #include "base/file_util.h" #include "base/files/file_path.h" #include "base/files/scoped_temp_dir.h" -#include "base/md5.h" #include "base/message_loop/message_loop.h" #include "base/strings/utf_string_conversions.h" -#include "chrome/browser/google_apis/test_util.h" +#include "chrome/common/chrome_constants.h" +#include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" +#include "chrome/test/base/testing_profile_manager.h" +#include "content/public/test/test_browser_thread_bundle.h" #include "content/public/test/test_file_system_options.h" +#include "google_apis/drive/test_util.h" #include "testing/gtest/include/gtest/gtest.h" #include "webkit/browser/fileapi/external_mount_points.h" #include "webkit/browser/fileapi/file_system_backend.h" @@ -23,6 +26,33 @@ namespace drive { namespace util { +namespace { + +// Sets up ProfileManager for testing and marks the current thread as UI by +// TestBrowserThreadBundle. We need the thread since Profile objects must be +// touched from UI and hence has CHECK/DCHECKs for it. +class ProfileRelatedFileSystemUtilTest : public testing::Test { + protected: + ProfileRelatedFileSystemUtilTest() + : testing_profile_manager_(TestingBrowserProcess::GetGlobal()) { + } + + virtual void SetUp() OVERRIDE { + ASSERT_TRUE(testing_profile_manager_.SetUp()); + } + + Profile* CreateProfileWithName(const std::string& name) { + return testing_profile_manager_.CreateTestingProfile( + chrome::kProfileDirPrefix + name); + } + + private: + content::TestBrowserThreadBundle thread_bundle_; + TestingProfileManager testing_profile_manager_; +}; + +} // namespace + TEST(FileSystemUtilTest, FilePathToDriveURL) { base::FilePath path; @@ -40,23 +70,38 @@ TEST(FileSystemUtilTest, FilePathToDriveURL) { EXPECT_EQ(path, DriveURLToFilePath(FilePathToDriveURL(path))); // Path with multi byte characters. - string16 utf16_string; + base::string16 utf16_string; utf16_string.push_back(0x307b); // HIRAGANA_LETTER_HO utf16_string.push_back(0x3052); // HIRAGANA_LETTER_GE path = GetDriveMyDriveRootPath().Append( - base::FilePath::FromUTF8Unsafe(UTF16ToUTF8(utf16_string) + ".txt")); + base::FilePath::FromUTF8Unsafe(base::UTF16ToUTF8(utf16_string) + ".txt")); EXPECT_EQ(path, DriveURLToFilePath(FilePathToDriveURL(path))); } +TEST_F(ProfileRelatedFileSystemUtilTest, GetDriveMountPointPath) { + Profile* profile = CreateProfileWithName("hash1"); + EXPECT_EQ(base::FilePath::FromUTF8Unsafe("/special/drive-hash1"), + GetDriveMountPointPath(profile)); +} + +TEST_F(ProfileRelatedFileSystemUtilTest, ExtractProfileFromPath) { + Profile* profile1 = CreateProfileWithName("hash1"); + Profile* profile2 = CreateProfileWithName("hash2"); + EXPECT_EQ(profile1, ExtractProfileFromPath( + base::FilePath::FromUTF8Unsafe("/special/drive-hash1"))); + EXPECT_EQ(profile2, ExtractProfileFromPath( + base::FilePath::FromUTF8Unsafe("/special/drive-hash2/root/xxx"))); + EXPECT_EQ(NULL, ExtractProfileFromPath( + base::FilePath::FromUTF8Unsafe("/special/non-drive-path"))); +} + TEST(FileSystemUtilTest, IsUnderDriveMountPoint) { EXPECT_FALSE(IsUnderDriveMountPoint( base::FilePath::FromUTF8Unsafe("/wherever/foo.txt"))); EXPECT_FALSE(IsUnderDriveMountPoint( base::FilePath::FromUTF8Unsafe("/special/foo.txt"))); EXPECT_FALSE(IsUnderDriveMountPoint( - base::FilePath::FromUTF8Unsafe("/special/drivex/foo.txt"))); - EXPECT_FALSE(IsUnderDriveMountPoint( - base::FilePath::FromUTF8Unsafe("special/drivex/foo.txt"))); + base::FilePath::FromUTF8Unsafe("special/drive/foo.txt"))); EXPECT_TRUE(IsUnderDriveMountPoint( base::FilePath::FromUTF8Unsafe("/special/drive"))); @@ -64,6 +109,8 @@ TEST(FileSystemUtilTest, IsUnderDriveMountPoint) { base::FilePath::FromUTF8Unsafe("/special/drive/foo.txt"))); EXPECT_TRUE(IsUnderDriveMountPoint( base::FilePath::FromUTF8Unsafe("/special/drive/subdir/foo.txt"))); + EXPECT_TRUE(IsUnderDriveMountPoint( + base::FilePath::FromUTF8Unsafe("/special/drive-xxx/foo.txt"))); } TEST(FileSystemUtilTest, ExtractDrivePath) { @@ -73,9 +120,6 @@ TEST(FileSystemUtilTest, ExtractDrivePath) { EXPECT_EQ(base::FilePath(), ExtractDrivePath( base::FilePath::FromUTF8Unsafe("/special/foo.txt"))); - EXPECT_EQ(base::FilePath(), - ExtractDrivePath( - base::FilePath::FromUTF8Unsafe("/special/drivex/foo.txt"))); EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive"), ExtractDrivePath( @@ -86,9 +130,14 @@ TEST(FileSystemUtilTest, ExtractDrivePath) { EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/subdir/foo.txt"), ExtractDrivePath(base::FilePath::FromUTF8Unsafe( "/special/drive/subdir/foo.txt"))); + EXPECT_EQ(base::FilePath::FromUTF8Unsafe("drive/foo.txt"), + ExtractDrivePath( + base::FilePath::FromUTF8Unsafe("/special/drive-xxx/foo.txt"))); } TEST(FileSystemUtilTest, ExtractDrivePathFromFileSystemUrl) { + TestingProfile profile; + // Set up file system context for testing. base::ScopedTempDir temp_dir_; ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); @@ -105,17 +154,18 @@ TEST(FileSystemUtilTest, ExtractDrivePathFromFileSystemUrl) { NULL, // quota_manager_proxy, ScopedVector(), temp_dir_.path(), // partition_path - fileapi::CreateAllowFileAccessOptions())); + content::CreateAllowFileAccessOptions())); // Type:"external" + virtual_path:"drive/foo/bar" resolves to "drive/foo/bar". const std::string& drive_mount_name = - GetDriveMountPointPath().BaseName().AsUTF8Unsafe(); + GetDriveMountPointPath(&profile).BaseName().AsUTF8Unsafe(); mount_points->RegisterFileSystem( drive_mount_name, fileapi::kFileSystemTypeDrive, - GetDriveMountPointPath()); + fileapi::FileSystemMountOption(), + GetDriveMountPointPath(&profile)); EXPECT_EQ( - base::FilePath::FromUTF8Unsafe(drive_mount_name + "/foo/bar"), + base::FilePath::FromUTF8Unsafe("drive/foo/bar"), ExtractDrivePathFromFileSystemUrl(context->CrackURL(GURL( "filesystem:chrome-extension://dummy-id/external/" + drive_mount_name + "/foo/bar")))); @@ -125,9 +175,10 @@ TEST(FileSystemUtilTest, ExtractDrivePathFromFileSystemUrl) { mount_points->RegisterFileSystem( "drive2", fileapi::kFileSystemTypeDrive, - GetDriveMountPointPath()); + fileapi::FileSystemMountOption(), + GetDriveMountPointPath(&profile)); EXPECT_EQ( - base::FilePath::FromUTF8Unsafe(drive_mount_name + "/foo/bar"), + base::FilePath::FromUTF8Unsafe("drive/foo/bar"), ExtractDrivePathFromFileSystemUrl(context->CrackURL(GURL( "filesystem:chrome-extension://dummy-id/external/drive2/foo/bar")))); @@ -135,6 +186,7 @@ TEST(FileSystemUtilTest, ExtractDrivePathFromFileSystemUrl) { mount_points->RegisterFileSystem( "Downloads", fileapi::kFileSystemTypeNativeLocal, + fileapi::FileSystemMountOption(), temp_dir_.path()); EXPECT_EQ( base::FilePath(), @@ -146,10 +198,10 @@ TEST(FileSystemUtilTest, ExtractDrivePathFromFileSystemUrl) { std::string isolated_id = fileapi::IsolatedContext::GetInstance()->RegisterFileSystemForPath( fileapi::kFileSystemTypeNativeForPlatformApp, - GetDriveMountPointPath().AppendASCII("bar/buz"), + GetDriveMountPointPath(&profile).AppendASCII("bar/buz"), &isolated_name); EXPECT_EQ( - base::FilePath::FromUTF8Unsafe(drive_mount_name + "/bar/buz"), + base::FilePath::FromUTF8Unsafe("drive/bar/buz"), ExtractDrivePathFromFileSystemUrl(context->CrackURL(GURL( "filesystem:chrome-extension://dummy-id/isolated/" + isolated_id + "/" + isolated_name)))); @@ -167,10 +219,17 @@ TEST(FileSystemUtilTest, EscapeUnescapeCacheFileName) { TEST(FileSystemUtilTest, NormalizeFileName) { EXPECT_EQ("", NormalizeFileName("")); EXPECT_EQ("foo", NormalizeFileName("foo")); - EXPECT_EQ("foo\xE2\x88\x95zzz", NormalizeFileName("foo/zzz")); - EXPECT_EQ("\xE2\x88\x95\xE2\x88\x95\xE2\x88\x95", NormalizeFileName("///")); + // Slash + EXPECT_EQ("foo_zzz", NormalizeFileName("foo/zzz")); + EXPECT_EQ("___", NormalizeFileName("///")); // Japanese hiragana "hi" + semi-voiced-mark is normalized to "pi". EXPECT_EQ("\xE3\x81\xB4", NormalizeFileName("\xE3\x81\xB2\xE3\x82\x9A")); + // Dot + EXPECT_EQ("_", NormalizeFileName(".")); + EXPECT_EQ("_", NormalizeFileName("..")); + EXPECT_EQ("_", NormalizeFileName("...")); + EXPECT_EQ(".bashrc", NormalizeFileName(".bashrc")); + EXPECT_EQ("._", NormalizeFileName("./")); } TEST(FileSystemUtilTest, GetCacheRootPath) { @@ -180,61 +239,6 @@ TEST(FileSystemUtilTest, GetCacheRootPath) { util::GetCacheRootPath(&profile)); } -TEST(FileSystemUtilTest, NeedsNamespaceMigration) { - // Not Drive cases. - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/Downloads"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/Downloads/x"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/wherever/foo.txt"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/foo.txt"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drivex/foo.txt"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("special/drivex/foo.txt"))); - - // Before migration. - EXPECT_TRUE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive"))); - EXPECT_TRUE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive/foo.txt"))); - EXPECT_TRUE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive/subdir/foo.txt"))); - - // Already migrated. - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive/root"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive/root/dir1"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive/root/root"))); - EXPECT_FALSE(NeedsNamespaceMigration( - base::FilePath::FromUTF8Unsafe("/special/drive/root/root/dir1"))); -} - -TEST(FileSystemUtilTest, ConvertToMyDriveNamespace) { - // Migration cases. - EXPECT_EQ(base::FilePath::FromUTF8Unsafe("/special/drive/root"), - drive::util::ConvertToMyDriveNamespace( - base::FilePath::FromUTF8Unsafe("/special/drive"))); - - EXPECT_EQ(base::FilePath::FromUTF8Unsafe("/special/drive/root/dir1"), - drive::util::ConvertToMyDriveNamespace( - base::FilePath::FromUTF8Unsafe("/special/drive/dir1"))); -} - -TEST(FileSystemUtilTest, IsSpecialResourceId) { - EXPECT_FALSE(util::IsSpecialResourceId("abc")); - EXPECT_FALSE(util::IsSpecialResourceId("file:123")); - EXPECT_FALSE(util::IsSpecialResourceId("folder:root")); - EXPECT_FALSE(util::IsSpecialResourceId("folder:xyz")); - - EXPECT_TRUE(util::IsSpecialResourceId("")); - EXPECT_TRUE(util::IsSpecialResourceId("")); -} - TEST(FileSystemUtilTest, GDocFile) { base::ScopedTempDir temp_dir; ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); @@ -294,16 +298,5 @@ TEST(FileSystemUtilTest, GDocFile) { EXPECT_TRUE(ReadResourceIdFromGDocFile(file).empty()); } -TEST(FileSystemUtilTest, GetMd5Digest) { - base::ScopedTempDir temp_dir; - ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); - - base::FilePath path = temp_dir.path().AppendASCII("test.txt"); - const char kTestData[] = "abcdefghijklmnopqrstuvwxyz0123456789"; - ASSERT_TRUE(google_apis::test_util::WriteStringToFile(path, kTestData)); - - EXPECT_EQ(base::MD5String(kTestData), GetMd5Digest(path)); -} - } // namespace util } // namespace drive