1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <base/file_path.h> 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include <chrome/browser/policy/policy_path_parser.h> 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "testing/gtest/include/gtest/gtest.h" 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace policy { 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass PolicyPathParserTests : public testing::Test { 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen protected: 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void CheckForSubstitution(FilePath::StringType test_string, 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType var_name) { 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType var(test_string); 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType var_result = 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen path_parser::ExpandPathVariables(var); 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(var_result.find(var_name), FilePath::StringType::npos); 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 23dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(PolicyPathParserTests, AllPlatformVariables) { 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // No vars whatsoever no substitution should occur. 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType no_vars(FILE_PATH_LITERAL("//$C/shares")); 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType no_vars_result = 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen path_parser::ExpandPathVariables(no_vars); 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(no_vars_result, no_vars); 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // This is unknown variable and shouldn't be substituted. 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType unknown_vars(FILE_PATH_LITERAL("//$C/${buggy}")); 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType unknown_vars_result = 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen path_parser::ExpandPathVariables(unknown_vars); 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(unknown_vars_result, unknown_vars); 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Both should have been substituted. 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType vars(FILE_PATH_LITERAL("${user_name}${machine_name}")); 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType vars_result = path_parser::ExpandPathVariables(vars); 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${user_name}")), 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType::npos); 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${machine_name}")), 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType::npos); 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Should substitute only one instance. 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen vars = FILE_PATH_LITERAL("${machine_name}${machine_name}"); 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen vars_result = path_parser::ExpandPathVariables(vars); 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen size_t pos = vars_result.find(FILE_PATH_LITERAL("${machine_name}")); 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_NE(pos, FilePath::StringType::npos); 49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${machine_name}"), pos+1), 50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType::npos); 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen vars =FILE_PATH_LITERAL("${user_name}${machine_name}"); 53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen vars_result = path_parser::ExpandPathVariables(vars); 54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${user_name}")), 55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType::npos); 56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen ASSERT_EQ(vars_result.find(FILE_PATH_LITERAL("${machine_name}")), 57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FilePath::StringType::npos); 58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${user_name}"), 60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${user_name}")); 61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${machine_name}"), 62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${machine_name}")); 63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#if defined(OS_MACOSX) 66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 67dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(PolicyPathParserTests, MacVariables) { 68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${users}"), 69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${users}")); 70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${documents}"), 71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${documents}")); 72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 74dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#elif defined(OS_WIN) 75dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 76dc0f95d653279beabeb9817299e2902918ba123eKristian MonsenTEST_F(PolicyPathParserTests, WinVariables) { 77dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${documents}"), 78dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${documents}")); 79dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${local_app_data}"), 80dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${local_app_data}")); 81dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${roaming_app_data}"), 82dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${roaming_app_data}")); 83dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${profile}"), 84dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${profile}")); 85dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${global_app_data}"), 86dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${global_app_data}")); 87dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${program_files}"), 88dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${program_files}")); 89dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CheckForSubstitution(FILE_PATH_LITERAL("//$C/${windows}"), 90dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen FILE_PATH_LITERAL("${windows}")); 91dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} 92dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 93dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // OS_WIN 94dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 95dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} // namespace policy 96