1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/safe_browsing/path_sanitizer.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <vector> 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/logging.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/path_service.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "testing/gtest/include/gtest/gtest.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Returns the root directory with a trailing separator. Works on all platforms. 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbase::FilePath GetRootDirectory() { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::FilePath dir_temp; 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!PathService::Get(base::DIR_TEMP, &dir_temp)) 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch NOTREACHED(); 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::vector<base::FilePath::StringType> components; 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dir_temp.GetComponents(&components); 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return base::FilePath(components[0]).AsEndingWithSeparator(); 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 29116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(SafeBrowsingPathSanitizerTest, HomeDirectoryIsNotEmpty) { 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch safe_browsing::PathSanitizer path_sanitizer; 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_FALSE(path_sanitizer.GetHomeDirectory().empty()); 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 35116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(SafeBrowsingPathSanitizerTest, DontStripHomeDirectoryTest) { 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Test with path not in home directory. 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::FilePath path = 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GetRootDirectory().Append(FILE_PATH_LITERAL("not_in_home_directory.ext")); 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::FilePath path_expected = path; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch safe_browsing::PathSanitizer path_sanitizer; 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch path_sanitizer.StripHomeDirectory(&path); 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_EQ(path.value(), path_expected.value()); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(SafeBrowsingPathSanitizerTest, DoStripHomeDirectoryTest) { 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Test with path in home directory. 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch safe_browsing::PathSanitizer path_sanitizer; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::FilePath path = path_sanitizer.GetHomeDirectory().Append( 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch FILE_PATH_LITERAL("in_home_directory.ext")); 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch base::FilePath path_expected = base::FilePath(FILE_PATH_LITERAL("~")).Append( 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch FILE_PATH_LITERAL("in_home_directory.ext")); 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch path_sanitizer.StripHomeDirectory(&path); 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ASSERT_EQ(path.value(), path_expected.value()); 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 60