1// Copyright 2013 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 <string> 6 7#include "base/prefs/pref_value_map.h" 8#include "base/values.h" 9#include "chrome/browser/net/disk_cache_dir_policy_handler.h" 10#include "chrome/common/pref_names.h" 11#include "components/policy/core/common/policy_map.h" 12#include "policy/policy_constants.h" 13#include "testing/gtest/include/gtest/gtest.h" 14 15namespace policy { 16 17class DiskCacheDirPolicyTest : public testing::Test { 18 protected: 19 PolicyMap policy_; 20 DiskCacheDirPolicyHandler handler_; 21 PrefValueMap prefs_; 22}; 23 24TEST_F(DiskCacheDirPolicyTest, Default) { 25 handler_.ApplyPolicySettings(policy_, &prefs_); 26 EXPECT_FALSE(prefs_.GetValue(prefs::kDiskCacheDir, NULL)); 27} 28 29TEST_F(DiskCacheDirPolicyTest, SetPolicyInvalid) { 30 // DiskCacheDir policy expects a string; give it a boolean. 31 policy_.Set(key::kDiskCacheDir, 32 POLICY_LEVEL_MANDATORY, 33 POLICY_SCOPE_USER, 34 new base::FundamentalValue(false), 35 NULL); 36 handler_.ApplyPolicySettings(policy_, &prefs_); 37 EXPECT_FALSE(prefs_.GetValue(prefs::kDiskCacheDir, NULL)); 38} 39 40TEST_F(DiskCacheDirPolicyTest, SetPolicyValid) { 41 // Use a variable in the value. It should be expanded by the handler. 42 const std::string in = "${user_name}/foo"; 43 policy_.Set(key::kDiskCacheDir, 44 POLICY_LEVEL_MANDATORY, 45 POLICY_SCOPE_USER, 46 new base::StringValue(in), 47 NULL); 48 handler_.ApplyPolicySettings(policy_, &prefs_); 49 50 const base::Value* value; 51 ASSERT_TRUE(prefs_.GetValue(prefs::kDiskCacheDir, &value)); 52 std::string out; 53 ASSERT_TRUE(value->GetAsString(&out)); 54 EXPECT_NE(std::string::npos, out.find("foo")); 55 EXPECT_EQ(std::string::npos, out.find("${user_name}")); 56} 57 58} // namespace policy 59