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 "policy/policy_constants.h"
13 #include "testing/gtest/include/gtest/gtest.h"
17 class DiskCacheDirPolicyTest
: public testing::Test
{
20 DiskCacheDirPolicyHandler handler_
;
24 TEST_F(DiskCacheDirPolicyTest
, Default
) {
25 handler_
.ApplyPolicySettings(policy_
, &prefs_
);
26 EXPECT_FALSE(prefs_
.GetValue(prefs::kDiskCacheDir
, NULL
));
29 TEST_F(DiskCacheDirPolicyTest
, SetPolicyInvalid
) {
30 // DiskCacheDir policy expects a string; give it a boolean.
31 policy_
.Set(key::kDiskCacheDir
,
32 POLICY_LEVEL_MANDATORY
,
34 new base::FundamentalValue(false),
36 handler_
.ApplyPolicySettings(policy_
, &prefs_
);
37 EXPECT_FALSE(prefs_
.GetValue(prefs::kDiskCacheDir
, NULL
));
40 TEST_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
,
46 new base::StringValue(in
),
48 handler_
.ApplyPolicySettings(policy_
, &prefs_
);
50 const base::Value
* value
;
51 ASSERT_TRUE(prefs_
.GetValue(prefs::kDiskCacheDir
, &value
));
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}"));