// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ash/scanning/scanning_file_path_helper.h"
#include "base/files/file_path.h"
#include "chrome/test/base/testing_browser_process.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ash {
namespace {
// "root" is appended to the user's Google Drive directory to form the
// complete path.
constexpr char kRoot[] = "root";
} // namespace
class ScanningFilePathHelperTest : public testing::Test {
public:
ScanningFilePathHelperTest()
: drive_path_(base::FilePath("drive/root")),
my_files_path_(base::FilePath("MyFiles")),
file_path_helper_(ScanningFilePathHelper(drive_path_, my_files_path_)) {
}
~ScanningFilePathHelperTest() override = default;
protected:
base::FilePath drive_path_;
base::FilePath my_files_path_;
ScanningFilePathHelper file_path_helper_;
};
// Validates that the correct My Files path is returned.
TEST_F(ScanningFilePathHelperTest, GetMyFilesPath) {
EXPECT_EQ(my_files_path_, file_path_helper_.GetMyFilesPath());
}
// Validates that the correct base name is returned from a generic filepath.
TEST_F(ScanningFilePathHelperTest, BaseNameFromGenericPath) {
EXPECT_EQ("directory", file_path_helper_.GetBaseNameFromPath(
base::FilePath("/test/directory")));
}
// Validates that the correct base name is returned from a generic filepath
// when the Google Drive path is empty.
TEST_F(ScanningFilePathHelperTest,
BaseNameFromGenericPathWithGoogleDriveAbsent) {
drive_path_ = base::FilePath();
file_path_helper_ = ScanningFilePathHelper(drive_path_, my_files_path_);
EXPECT_EQ("directory", file_path_helper_.GetBaseNameFromPath(
base::FilePath("/test/directory")));
}
// Validates that the correct base name is returned from the file paths under
// the Google Drive root.
TEST_F(ScanningFilePathHelperTest, BaseNameFromGoogleDrivePath) {
EXPECT_EQ("Sub Folder", file_path_helper_.GetBaseNameFromPath(
drive_path_.Append(kRoot).Append("Sub Folder")));
EXPECT_EQ("My Drive",
file_path_helper_.GetBaseNameFromPath(drive_path_.Append(kRoot)));
}
// Validates that the correct base name is returned from file paths under the
// 'My Files' path.
TEST_F(ScanningFilePathHelperTest, BaseNameFromMyFilesPath) {
EXPECT_EQ("Sub Folder", file_path_helper_.GetBaseNameFromPath(
my_files_path_.Append("Sub Folder")));
EXPECT_EQ("My files", file_path_helper_.GetBaseNameFromPath(my_files_path_));
}
// Validates that passing a file path that is a child of the MyFiles path
// returns true for IsFilePathSupported().
TEST_F(ScanningFilePathHelperTest, FilePathSupportedMyFilesChild) {
EXPECT_TRUE(file_path_helper_.IsFilePathSupported(
my_files_path_.Append("test_file.png")));
}
// Validates that passing a file path that is a child of the Drive path returns
// true for IsFilePathSupported().
TEST_F(ScanningFilePathHelperTest, FilePathSupportedGoogleDrivePathChild) {
EXPECT_TRUE(file_path_helper_.IsFilePathSupported(
drive_path_.Append("test_file.png")));
}
// Validates that passing an unsupported path returns false for
// IsFilePathSupported().
TEST_F(ScanningFilePathHelperTest, FilePathNotSupported) {
ASSERT_FALSE(file_path_helper_.IsFilePathSupported(
base::FilePath("/wrong/file/path/file.png")));
}
// Validates that passing a file path with a reference returns false for
// IsFilePathSupported().
TEST_F(ScanningFilePathHelperTest, FilePathReferencesNotSupported) {
ASSERT_FALSE(file_path_helper_.IsFilePathSupported(
my_files_path_.Append("../MyFiles/test_file.png")));
}
// Validates that passing a file path that is a child of a removable media
// returns true for IsFilePathSupported().
TEST_F(ScanningFilePathHelperTest, FilePathSupportedRemovableMedia) {
ASSERT_TRUE(file_path_helper_.IsFilePathSupported(
base::FilePath("/media/removable/STATE/test_file.png")));
}
// Validates that passing a file path that is a child of the MyFiles path
// returns true when Google Drive path is empty for IsFilePathSupported().
TEST_F(ScanningFilePathHelperTest, FilePathSupportedGoogleDriveAbsent) {
drive_path_ = base::FilePath();
file_path_helper_ = ScanningFilePathHelper(drive_path_, my_files_path_);
EXPECT_TRUE(file_path_helper_.IsFilePathSupported(
my_files_path_.Append("test_file.png")));
}
} // namespace ash