10f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 20f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 30f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)// found in the LICENSE file. 40f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 50f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include <string> 60f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 70f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "base/prefs/pref_value_map.h" 80f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "base/values.h" 90f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/browser/net/disk_cache_dir_policy_handler.h" 100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "chrome/common/pref_names.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/policy_map.h" 120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "policy/policy_constants.h" 130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)namespace policy { 160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class DiskCacheDirPolicyTest : public testing::Test { 180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) protected: 190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PolicyMap policy_; 200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) DiskCacheDirPolicyHandler handler_; 210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PrefValueMap prefs_; 220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}; 230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(DiskCacheDirPolicyTest, Default) { 250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) handler_.ApplyPolicySettings(policy_, &prefs_); 260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(prefs_.GetValue(prefs::kDiskCacheDir, NULL)); 270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(DiskCacheDirPolicyTest, SetPolicyInvalid) { 300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // DiskCacheDir policy expects a string; give it a boolean. 310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) policy_.Set(key::kDiskCacheDir, 320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) POLICY_LEVEL_MANDATORY, 330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) POLICY_SCOPE_USER, 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new base::FundamentalValue(false), 350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) NULL); 360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) handler_.ApplyPolicySettings(policy_, &prefs_); 370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(prefs_.GetValue(prefs::kDiskCacheDir, NULL)); 380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(DiskCacheDirPolicyTest, SetPolicyValid) { 410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) // Use a variable in the value. It should be expanded by the handler. 420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const std::string in = "${user_name}/foo"; 430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) policy_.Set(key::kDiskCacheDir, 440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) POLICY_LEVEL_MANDATORY, 450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) POLICY_SCOPE_USER, 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new base::StringValue(in), 470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) NULL); 480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) handler_.ApplyPolicySettings(policy_, &prefs_); 490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const base::Value* value; 510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(prefs_.GetValue(prefs::kDiskCacheDir, &value)); 520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) std::string out; 530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(value->GetAsString(&out)); 540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_NE(std::string::npos, out.find("foo")); 550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(std::string::npos, out.find("${user_name}")); 560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} // namespace policy 59