| // Copyright 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/chromeos/file_manager/path_util.h" |
| |
| #include "base/files/file_path.h" |
| #include "chrome/browser/chromeos/drive/file_system_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 "testing/gtest/include/gtest/gtest.h" |
| |
| namespace file_manager { |
| namespace util { |
| namespace { |
| |
| class ProfileRelatedTest : public testing::Test { |
| protected: |
| ProfileRelatedTest() |
| : 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: |
| TestingProfileManager testing_profile_manager_; |
| }; |
| |
| TEST(FileManagerPathUtilTest, MultiProfileDownloadsFolderMigration) { |
| TestingProfile profile; |
| |
| // This looks like "/home/chronos/u-hash/Downloads" in the production |
| // environment. |
| const base::FilePath kDownloads = GetDownloadsFolderForProfile(&profile); |
| |
| base::FilePath path; |
| |
| EXPECT_TRUE(MigratePathFromOldFormat( |
| &profile, |
| base::FilePath::FromUTF8Unsafe("/home/chronos/user/Downloads"), |
| &path)); |
| EXPECT_EQ(kDownloads, path); |
| |
| EXPECT_TRUE(MigratePathFromOldFormat( |
| &profile, |
| base::FilePath::FromUTF8Unsafe("/home/chronos/user/Downloads/a/b"), |
| &path)); |
| EXPECT_EQ(kDownloads.AppendASCII("a/b"), path); |
| |
| // Path already in the new format is not converted. |
| EXPECT_FALSE(MigratePathFromOldFormat( |
| &profile, |
| kDownloads.AppendASCII("a/b"), |
| &path)); |
| |
| // Only the "Downloads" path is converted. |
| EXPECT_FALSE(MigratePathFromOldFormat( |
| &profile, |
| base::FilePath::FromUTF8Unsafe("/home/chronos/user/dl"), |
| &path)); |
| } |
| |
| TEST_F(ProfileRelatedTest, MultiProfileDriveFolderMigration) { |
| Profile* profile = CreateProfileWithName("hash"); |
| |
| const base::FilePath kDrive = drive::util::GetDriveMountPointPath(profile); |
| ASSERT_EQ(base::FilePath::FromUTF8Unsafe("/special/drive-hash"), kDrive); |
| |
| base::FilePath path; |
| |
| EXPECT_TRUE(MigratePathFromOldFormat( |
| profile, |
| base::FilePath::FromUTF8Unsafe("/special/drive"), |
| &path)); |
| EXPECT_EQ(kDrive, path); |
| |
| EXPECT_TRUE(MigratePathFromOldFormat( |
| profile, |
| base::FilePath::FromUTF8Unsafe("/special/drive/a/b"), |
| &path)); |
| EXPECT_EQ(kDrive.AppendASCII("a/b"), path); |
| |
| // Path already in the new format is not converted. |
| EXPECT_FALSE(MigratePathFromOldFormat( |
| profile, |
| kDrive.AppendASCII("a/b"), |
| &path)); |
| |
| // Only the "/special/drive" path is converted. |
| EXPECT_FALSE(MigratePathFromOldFormat( |
| profile, |
| base::FilePath::FromUTF8Unsafe("/special/notdrive"), |
| &path)); |
| } |
| |
| } // namespace |
| } // namespace util |
| } // namespace file_manager |