1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/safe_browsing/path_sanitizer.h"
6
7#include <vector>
8
9#include "base/logging.h"
10#include "base/path_service.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace {
14
15// Returns the root directory with a trailing separator. Works on all platforms.
16base::FilePath GetRootDirectory() {
17  base::FilePath dir_temp;
18  if (!PathService::Get(base::DIR_TEMP, &dir_temp))
19    NOTREACHED();
20
21  std::vector<base::FilePath::StringType> components;
22  dir_temp.GetComponents(&components);
23
24  return base::FilePath(components[0]).AsEndingWithSeparator();
25}
26
27}  // namespace
28
29TEST(SafeBrowsingPathSanitizerTest, HomeDirectoryIsNotEmpty) {
30  safe_browsing::PathSanitizer path_sanitizer;
31
32  ASSERT_FALSE(path_sanitizer.GetHomeDirectory().empty());
33}
34
35TEST(SafeBrowsingPathSanitizerTest, DontStripHomeDirectoryTest) {
36  // Test with path not in home directory.
37  base::FilePath path =
38      GetRootDirectory().Append(FILE_PATH_LITERAL("not_in_home_directory.ext"));
39  base::FilePath path_expected = path;
40
41  safe_browsing::PathSanitizer path_sanitizer;
42  path_sanitizer.StripHomeDirectory(&path);
43
44  ASSERT_EQ(path.value(), path_expected.value());
45}
46
47TEST(SafeBrowsingPathSanitizerTest, DoStripHomeDirectoryTest) {
48  // Test with path in home directory.
49  safe_browsing::PathSanitizer path_sanitizer;
50
51  base::FilePath path = path_sanitizer.GetHomeDirectory().Append(
52      FILE_PATH_LITERAL("in_home_directory.ext"));
53  base::FilePath path_expected = base::FilePath(FILE_PATH_LITERAL("~")).Append(
54      FILE_PATH_LITERAL("in_home_directory.ext"));
55
56  path_sanitizer.StripHomeDirectory(&path);
57
58  ASSERT_EQ(path.value(), path_expected.value());
59}
60