// Copyright (c) 2018 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 "extensions/common/extension_resource_path_normalizer.h" #include #include "testing/gtest/include/gtest/gtest.h" TEST(NormalizeExtensionResourcePath, NormalPath) { { base::FilePath original_path(FILE_PATH_LITERAL("icon.png")); base::FilePath expected_path(FILE_PATH_LITERAL("icon.png")); base::FilePath normal_path; ASSERT_TRUE(NormalizeExtensionResourcePath(original_path, &normal_path)); EXPECT_EQ(expected_path, normal_path); } { base::FilePath original_path(FILE_PATH_LITERAL("src/icon.png")); base::FilePath expected_path = base::FilePath(FILE_PATH_LITERAL("src")).AppendASCII("icon.png"); base::FilePath normal_path; ASSERT_TRUE(NormalizeExtensionResourcePath(original_path, &normal_path)); EXPECT_EQ(expected_path, normal_path); } } TEST(NormalizeExtensionResourcePath, ReferencesParent) { for (const auto* path_str : {FILE_PATH_LITERAL("../icon.png"), FILE_PATH_LITERAL("src/../icon.png"), FILE_PATH_LITERAL("src/icons/../icon.png")}) { base::FilePath path(path_str); base::FilePath normal_path; EXPECT_FALSE(NormalizeExtensionResourcePath(path, &normal_path)); EXPECT_TRUE(normal_path.empty()); } } TEST(NormalizeExtensionResourcePath, EmptyPath) { for (const auto* path_str : {FILE_PATH_LITERAL(""), FILE_PATH_LITERAL("."), FILE_PATH_LITERAL("././")}) { base::FilePath path(path_str); base::FilePath normal_path; EXPECT_FALSE(NormalizeExtensionResourcePath(path, &normal_path)); EXPECT_TRUE(normal_path.empty()); } } TEST(NormalizeExtensionResourcePaths, Normalization) { const std::set original_paths{ base::FilePath(FILE_PATH_LITERAL("icon.png")), base::FilePath(FILE_PATH_LITERAL("src/icon.png")), base::FilePath(FILE_PATH_LITERAL("./src/././././icon.png")), base::FilePath(FILE_PATH_LITERAL("../")), base::FilePath(FILE_PATH_LITERAL("./")), }; const std::set expected_paths{ base::FilePath(FILE_PATH_LITERAL("icon.png")), base::FilePath(FILE_PATH_LITERAL("src")).AppendASCII("icon.png"), }; const auto actual_paths = NormalizeExtensionResourcePaths(original_paths); EXPECT_EQ(expected_paths, actual_paths); }