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.
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 "components/policy/core/common/policy_types.h"
13 #include "policy/policy_constants.h"
14 #include "testing/gtest/include/gtest/gtest.h"
18 class DiskCacheDirPolicyTest
: public testing::Test
{
21 DiskCacheDirPolicyHandler handler_
;
25 TEST_F(DiskCacheDirPolicyTest
, Default
) {
26 handler_
.ApplyPolicySettings(policy_
, &prefs_
);
27 EXPECT_FALSE(prefs_
.GetValue(prefs::kDiskCacheDir
, NULL
));
30 TEST_F(DiskCacheDirPolicyTest
, SetPolicyInvalid
) {
31 // DiskCacheDir policy expects a string; give it a boolean.
32 policy_
.Set(key::kDiskCacheDir
,
33 POLICY_LEVEL_MANDATORY
,
36 new base::FundamentalValue(false),
38 handler_
.ApplyPolicySettings(policy_
, &prefs_
);
39 EXPECT_FALSE(prefs_
.GetValue(prefs::kDiskCacheDir
, NULL
));
42 TEST_F(DiskCacheDirPolicyTest
, SetPolicyValid
) {
43 // Use a variable in the value. It should be expanded by the handler.
44 const std::string in
= "${user_name}/foo";
45 policy_
.Set(key::kDiskCacheDir
,
46 POLICY_LEVEL_MANDATORY
,
49 new base::StringValue(in
),
51 handler_
.ApplyPolicySettings(policy_
, &prefs_
);
53 const base::Value
* value
;
54 ASSERT_TRUE(prefs_
.GetValue(prefs::kDiskCacheDir
, &value
));
56 ASSERT_TRUE(value
->GetAsString(&out
));
57 EXPECT_NE(std::string::npos
, out
.find("foo"));
58 EXPECT_EQ(std::string::npos
, out
.find("${user_name}"));