Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / policy / policy_path_parser_unittest.cc
1 // Copyright (c) 2011 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 "base/files/file_path.h"
6 #include "chrome/browser/policy/policy_path_parser.h"
7
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace policy {
11
12 class PolicyPathParserTests : public testing::Test {
13  protected:
14   void CheckForSubstitution(base::FilePath::StringType test_string,
15                             base::FilePath::StringType var_name) {
16     base::FilePath::StringType var(test_string);
17     base::FilePath::StringType var_result =
18         path_parser::ExpandPathVariables(var);
19     ASSERT_EQ(var_result.find(var_name), base::FilePath::StringType::npos);
20   }
21 };
22
23 #if defined(OS_MACOSX)
24 // http://crbug.com/327520
25 #define MAYBE_AllPlatformVariables DISABLED_AllPlatformVariables
26 #else
27 #define MAYBE_AllPlatformVariables AllPlatformVariables
28 #endif
29 TEST_F(PolicyPathParserTests, MAYBE_AllPlatformVariables) {
30   // No vars whatsoever no substitution should occur.
31   base::FilePath::StringType no_vars(FILE_PATH_LITERAL("//$C/shares"));
32   base::FilePath::StringType no_vars_result =
33       path_parser::ExpandPathVariables(no_vars);
34   ASSERT_EQ(no_vars_result, no_vars);
35
36   // This is unknown variable and shouldn't be substituted.
37   base::FilePath::StringType unknown_vars(FILE_PATH_LITERAL("//$C/${buggy}"));
38   base::FilePath::StringType unknown_vars_result =
39       path_parser::ExpandPathVariables(unknown_vars);
40   ASSERT_EQ(unknown_vars_result, unknown_vars);
41
42   // Trim quotes around, but not inside paths. Test against bug 80211.
43   base::FilePath::StringType no_quotes(FILE_PATH_LITERAL("//$C/\"a\"/$path"));
44   base::FilePath::StringType single_quotes(
45       FILE_PATH_LITERAL("'//$C/\"a\"/$path'"));
46   base::FilePath::StringType double_quotes(
47       FILE_PATH_LITERAL("\"//$C/\"a\"/$path\""));
48   base::FilePath::StringType quotes_result =
49       path_parser::ExpandPathVariables(single_quotes);
50   ASSERT_EQ(quotes_result, no_quotes);
51   quotes_result = path_parser::ExpandPathVariables(double_quotes);
52   ASSERT_EQ(quotes_result, no_quotes);
53
54   // Both should have been substituted.
55   base::FilePath::StringType vars(
56       FILE_PATH_LITERAL("${user_name}${machine_name}"));
57   base::FilePath::StringType vars_result =
58       path_parser::ExpandPathVariables(vars);
59   ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${user_name}")),
60             base::FilePath::StringType::npos);
61   ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${machine_name}")),
62             base::FilePath::StringType::npos);
63
64   // Should substitute only one instance.
65   vars = FILE_PATH_LITERAL("${machine_name}${machine_name}");
66   vars_result = path_parser::ExpandPathVariables(vars);
67   size_t pos = vars_result.find(FILE_PATH_LITERAL("${machine_name}"));
68   ASSERT_NE(pos, base::FilePath::StringType::npos);
69   ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${machine_name}"), pos+1),
70             base::FilePath::StringType::npos);
71
72   vars =FILE_PATH_LITERAL("${user_name}${machine_name}");
73   vars_result = path_parser::ExpandPathVariables(vars);
74   ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${user_name}")),
75             base::FilePath::StringType::npos);
76   ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${machine_name}")),
77             base::FilePath::StringType::npos);
78
79   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${user_name}"),
80                        FILE_PATH_LITERAL("${user_name}"));
81   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${machine_name}"),
82                        FILE_PATH_LITERAL("${machine_name}"));
83 }
84
85 #if defined(OS_MACOSX)
86
87 TEST_F(PolicyPathParserTests, MacVariables) {
88   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${users}"),
89                        FILE_PATH_LITERAL("${users}"));
90   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${documents}"),
91                        FILE_PATH_LITERAL("${documents}"));
92 }
93
94 #elif defined(OS_WIN)
95
96 TEST_F(PolicyPathParserTests, WinVariables) {
97   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${documents}"),
98                        FILE_PATH_LITERAL("${documents}"));
99   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${local_app_data}"),
100                        FILE_PATH_LITERAL("${local_app_data}"));
101   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${roaming_app_data}"),
102                        FILE_PATH_LITERAL("${roaming_app_data}"));
103   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${profile}"),
104                        FILE_PATH_LITERAL("${profile}"));
105   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${global_app_data}"),
106                        FILE_PATH_LITERAL("${global_app_data}"));
107   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${program_files}"),
108                        FILE_PATH_LITERAL("${program_files}"));
109   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${windows}"),
110                        FILE_PATH_LITERAL("${windows}"));
111   CheckForSubstitution(FILE_PATH_LITERAL("//$C/${client_name}"),
112                        FILE_PATH_LITERAL("${client_name}"));
113 }
114
115 #endif  // OS_WIN
116
117 }  // namespace policy