configuration_policy_pref_store_unittest.cc revision 4a5e2dc747d50c653511c68ccb2cfbfb740bd5a7
1bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Use of this source code is governed by a BSD-style license that can be
3bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// found in the LICENSE file.
4bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
5bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include <gtest/gtest.h>
6bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
7bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "base/file_path.h"
8bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/configuration_policy_pref_store.h"
9bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/browser/policy/mock_configuration_policy_provider.h"
10bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/common/pref_names.h"
11bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen#include "chrome/common/chrome_switches.h"
12bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
13bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsennamespace policy {
14bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
15bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Holds a set of test parameters, consisting of pref name and policy type.
16bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass TypeAndName {
17bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen public:
18513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  TypeAndName(ConfigurationPolicyType type, const char* pref_name)
19bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      : type_(type),
20bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen        pref_name_(pref_name) {}
21bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
22513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ConfigurationPolicyType type() const { return type_; }
23bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  const char* pref_name() const { return pref_name_; }
24bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
25bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen private:
26513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ConfigurationPolicyType type_;
27bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  const char* pref_name_;
28bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
29bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
30bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for list-valued policy settings.
31bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreListTest
32bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    : public testing::TestWithParam<TypeAndName> {
33bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
34bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
35bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreListTest, GetDefault) {
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
37bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ListValue* list = NULL;
38bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetList(GetParam().pref_name(), &list));
39bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
40bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
41bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreListTest, SetValue) {
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
43bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ListValue* in_value = new ListValue();
44bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  in_value->Append(Value::CreateStringValue("test1"));
45bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  in_value->Append(Value::CreateStringValue("test2,"));
46bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  store.Apply(GetParam().type(), in_value);
47bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ListValue* list = NULL;
48bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetList(GetParam().pref_name(), &list));
49bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ListValue::const_iterator current(list->begin());
50513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const ListValue::const_iterator end(list->end());
51bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ASSERT_TRUE(current != end);
52bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string value;
53bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  (*current)->GetAsString(&value);
54bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ("test1", value);
55bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ++current;
56bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ASSERT_TRUE(current != end);
57bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  (*current)->GetAsString(&value);
58bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ("test2,", value);
59bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  ++current;
60bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(current == end);
61bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
62bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
63bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
64bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreListTestInstance,
65bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreListTest,
66bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
67513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyURLsToRestoreOnStartup,
68bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kURLsToRestoreOnStartup),
69513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyExtensionInstallAllowList,
70bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kExtensionInstallAllowList),
71513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyExtensionInstallDenyList,
72bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kExtensionInstallDenyList),
73513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyDisabledPlugins,
74bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPluginsPluginsBlacklist)));
75bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
76bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for string-valued policy settings.
77bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreStringTest
78bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    : public testing::TestWithParam<TypeAndName> {
79bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
80bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
81bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreStringTest, GetDefault) {
82731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
83bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result;
84bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(GetParam().pref_name(), &result));
85bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
86bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
87bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreStringTest, SetValue) {
88731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
89bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  store.Apply(GetParam().type(),
90bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen              Value::CreateStringValue("http://chromium.org"));
91bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result;
92bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetString(GetParam().pref_name(), &result));
93bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result, "http://chromium.org");
94bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
95bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
96bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
97bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreStringTestInstance,
98bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreStringTest,
99bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
100513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyHomePage,
101bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kHomePage),
102513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyProxyServer,
103bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kProxyServer),
104513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyProxyPacUrl,
105bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kProxyPacUrl),
106513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyProxyBypassList,
107bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kProxyBypassList),
108513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyApplicationLocale,
1094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kApplicationLocale),
1104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyApplicationLocale,
1114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kApplicationLocale),
1124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyAuthSchemes,
1134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kAuthSchemes),
1144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyAuthServerWhitelist,
1154a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kAuthServerWhitelist),
1164a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyAuthNegotiateDelegateWhitelist,
1174a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kAuthNegotiateDelegateWhitelist),
1184a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyGSSAPILibraryName,
1194a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kGSSAPILibraryName)));
120bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
121bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for boolean-valued policy settings.
122bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreBooleanTest
123bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    : public testing::TestWithParam<TypeAndName> {
124bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
125bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
126bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreBooleanTest, GetDefault) {
127731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
128bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = false;
129bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(GetParam().pref_name(), &result));
130bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
131bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
132bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreBooleanTest, SetValue) {
133731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
134bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  store.Apply(GetParam().type(), Value::CreateBooleanValue(false));
135bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = true;
136bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(GetParam().pref_name(), &result));
137bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(result);
138bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
139bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  store.Apply(GetParam().type(), Value::CreateBooleanValue(true));
140bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  result = false;
141bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(GetParam().pref_name(), &result));
142bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(result);
143bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
144bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
145bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
146bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreBooleanTestInstance,
147bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreBooleanTest,
148bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
149513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyHomepageIsNewTabPage,
150bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kHomePageIsNewTabPage),
151513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyAlternateErrorPagesEnabled,
152bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kAlternateErrorPagesEnabled),
153513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicySearchSuggestEnabled,
154bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kSearchSuggestEnabled),
155513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyDnsPrefetchingEnabled,
156bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kDnsPrefetchingEnabled),
157513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyDisableSpdy,
158731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                    prefs::kDisableSpdy),
159513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicySafeBrowsingEnabled,
160bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kSafeBrowsingEnabled),
161513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyMetricsReportingEnabled,
162bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kMetricsReportingEnabled),
163513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyPasswordManagerEnabled,
164bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPasswordManagerEnabled),
165513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyPasswordManagerAllowShowPasswords,
166bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPasswordManagerAllowShowPasswords),
167513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyShowHomeButton,
168bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kShowHomeButton),
169513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyPrintingEnabled,
170bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kPrintingEnabled),
171513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyJavascriptEnabled,
172731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                    prefs::kWebKitJavascriptEnabled),
173513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicySavingBrowserHistoryDisabled,
1744a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kSavingBrowserHistoryDisabled),
1754a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicySavingBrowserHistoryDisabled,
1764a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kSavingBrowserHistoryDisabled),
1774a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyDisableAuthNegotiateCnameLookup,
1784a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kDisableAuthNegotiateCnameLookup),
1794a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch        TypeAndName(kPolicyEnableAuthNegotiatePort,
1804a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                    prefs::kEnableAuthNegotiatePort)));
181731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
182731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#if defined(OS_CHROMEOS)
183731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickINSTANTIATE_TEST_CASE_P(
184731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    CrosConfigurationPolicyPrefStoreBooleanTestInstance,
185731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    ConfigurationPolicyPrefStoreBooleanTest,
186731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    testing::Values(
187513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyChromeOsLockOnIdleSuspend,
188731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                    prefs::kEnableScreenLock)));
189731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif  // defined(OS_CHROMEOS)
190bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
191bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for integer-valued policy settings.
192bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreIntegerTest
193bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    : public testing::TestWithParam<TypeAndName> {
194bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
195bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
196bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreIntegerTest, GetDefault) {
197731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
198bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  int result = 0;
199bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetInteger(GetParam().pref_name(), &result));
200bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
201bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
202bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_P(ConfigurationPolicyPrefStoreIntegerTest, SetValue) {
203731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
204bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  store.Apply(GetParam().type(), Value::CreateIntegerValue(2));
205bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  int result = 0;
206bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetInteger(GetParam().pref_name(), &result));
207bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result, 2);
208bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
209bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
210bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenINSTANTIATE_TEST_CASE_P(
211bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreIntegerTestInstance,
212bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    ConfigurationPolicyPrefStoreIntegerTest,
213bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen    testing::Values(
214513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch        TypeAndName(kPolicyRestoreOnStartup,
215bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                    prefs::kRestoreOnStartup)));
216bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
217bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for the proxy policy settings.
218bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreProxyTest : public testing::Test {
219bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
220bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
221731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickTEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptions) {
222bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
223bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
224513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyBypassList,
225513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("http://chromium.org/override"));
226513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyPacUrl,
227513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("http://short.org/proxy.pac"));
228513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServer,
229513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("chromium.org"));
230513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServerMode,
231513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateIntegerValue(
232513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                          kPolicyManuallyConfiguredProxyMode));
233bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
234731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
235bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
236bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
237bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
238bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyBypassList,
239bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                       &string_result));
240731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_EQ("http://chromium.org/override", string_result);
241731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result));
242513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  EXPECT_EQ("http://short.org/proxy.pac", string_result);
243731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyServer, &string_result));
244731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_EQ("chromium.org", string_result);
245bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool bool_result;
246bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result));
247bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(bool_result);
248731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result));
249bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(bool_result);
250bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
251bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
252bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxy) {
253bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
254bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
255513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyBypassList,
256513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("http://chromium.org/override"));
257513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServerMode,
258513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateIntegerValue(
259513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                          kPolicyNoProxyServerMode));
260bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
261731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
262bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
263bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
264bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
265bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList,
266bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                        &string_result));
267bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result));
268bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result));
269bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool bool_result;
270bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result));
271bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(bool_result);
272731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result));
273bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(bool_result);
274bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
275bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
276bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxyReversedApplyOrder) {
277bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
278bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
279513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServerMode,
280513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateIntegerValue(
281513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                          kPolicyNoProxyServerMode));
282513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyBypassList,
283513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("http://chromium.org/override"));
284bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
285731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
286bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
287bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
288bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
289bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList,
290bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                        &string_result));
291bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result));
292bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result));
293bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool bool_result;
294bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result));
295bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(bool_result);
296731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result));
297bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(bool_result);
298bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
299bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
300bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetect) {
301bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
302bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
303513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServerMode,
304513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateIntegerValue(
305513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                          kPolicyAutoDetectProxyMode));
306bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
307731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
308bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
309bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
310bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
311731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList,
312731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                                        &string_result));
313bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result));
314bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result));
315bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool bool_result;
316bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result));
317bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(bool_result);
318731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result));
319bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(bool_result);
320bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
321bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
322bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystem) {
323bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
324bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
325513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyBypassList,
326513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("http://chromium.org/override"));
327513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServerMode,
328513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateIntegerValue(
329513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                          kPolicyUseSystemProxyMode));
330bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
331731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
332bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
333bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
334bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
335bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList,
336731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                                        &string_result));
337bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result));
338bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result));
339bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool bool_result;
340bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result));
341bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect,
342bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                         &bool_result));
343bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
344bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
345bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystemReversedApplyOrder) {
346bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
347bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
348513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyServerMode,
349513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateIntegerValue(
350513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                          kPolicyUseSystemProxyMode));
351513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  provider->AddPolicy(kPolicyProxyBypassList,
352513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                      Value::CreateStringValue("http://chromium.org/override"));
353bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
354731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
355bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
356bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
357bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
358bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList,
359731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                                        &string_result));
360bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result));
361bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result));
362bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool bool_result;
363bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result));
364bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect,
365bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                                         &bool_result));
366bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
367bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
368bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreDefaultSearchTest : public testing::Test {
369bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
370bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
371bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that if the policy for default search is valid, i.e. there's a
372bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// search URL, that all the elements have been given proper defaults.
373bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MinimallyDefined) {
374513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const search_url = "http://test.com/search?t={searchTerms}";
375bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
376bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
377bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
378513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEnabled,
379731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      Value::CreateBooleanValue(true));
380731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  provider->AddPolicy(
381513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderSearchURL,
382bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(search_url));
383bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
384731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
385bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
386bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
387513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const DictionaryValue* prefs = store.prefs();
388bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
389bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
390bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL,
391bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &string_result));
392bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(string_result, search_url);
393bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
394bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderName,
395bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &string_result));
396bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(string_result, "test.com");
397bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
398bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderKeyword,
399bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &string_result));
400513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  EXPECT_EQ(string_result, std::string());
401bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
402bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL,
403bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &string_result));
404513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  EXPECT_EQ(string_result, std::string());
405bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
406bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderIconURL,
407bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &string_result));
408513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  EXPECT_EQ(string_result, std::string());
409bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
410bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderEncodings,
411bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &string_result));
412513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  EXPECT_EQ(string_result, std::string());
413bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
414bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
415bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that for a fully defined search policy, all elements have been
416bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// read properly.
417bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, FullyDefined) {
418513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const search_url = "http://test.com/search?t={searchTerms}";
419513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const suggest_url = "http://test.com/sugg?={searchTerms}";
420513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const icon_url = "http://test.com/icon.jpg";
421513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const name = "MyName";
422513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const keyword = "MyKeyword";
423513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const encodings = "UTF-16;UTF-8";
424bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
425bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
426bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
427513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEnabled,
428731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      Value::CreateBooleanValue(true));
429731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  provider->AddPolicy(
430513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderSearchURL,
431bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(search_url));
432bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
433513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderName,
434bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(name));
435bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
436513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderKeyword,
437bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(keyword));
438bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
439513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderSuggestURL,
440bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(suggest_url));
441bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
442513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderIconURL,
443bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(icon_url));
444bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
445513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEncodings,
446bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(encodings));
447bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
448731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
449bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
450513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const DictionaryValue* prefs = store.prefs();
451bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
452bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result_search_url;
453bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL,
454bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &result_search_url));
455bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result_search_url, search_url);
456bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
457bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result_name;
458bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderName,
459bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &result_name));
460bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result_name, name);
461bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
462bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result_keyword;
463bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderKeyword,
464bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &result_keyword));
465bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result_keyword, keyword);
466bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
467bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result_suggest_url;
468bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL,
469bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &result_suggest_url));
470bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result_suggest_url, suggest_url);
471bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
472bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result_icon_url;
473bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderIconURL,
474bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &result_icon_url));
475bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result_icon_url, icon_url);
476bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
477bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string result_encodings;
478bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderEncodings,
479bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen                               &result_encodings));
480bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(result_encodings, encodings);
481bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
482bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
483bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that if the default search policy is missing, that no elements of the
484bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// default search policy will be present.
485bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MissingUrl) {
486513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const suggest_url = "http://test.com/sugg?t={searchTerms}";
487513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const icon_url = "http://test.com/icon.jpg";
488513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const name = "MyName";
489513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const keyword = "MyKeyword";
490513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const encodings = "UTF-16;UTF-8";
491bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
492bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
493bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
494513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEnabled,
495731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      Value::CreateBooleanValue(true));
496731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  provider->AddPolicy(
497513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderName,
498bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(name));
499bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
500513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderKeyword,
501bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(keyword));
502bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
503513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderSuggestURL,
504bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(suggest_url));
505bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
506513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderIconURL,
507bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(icon_url));
508bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
509513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEncodings,
510bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(encodings));
511bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
512731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
513bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
514513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const DictionaryValue* prefs = store.prefs();
515bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
516bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
517bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL,
518513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
519bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderName,
520513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
521bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderKeyword,
522513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
523bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL,
524513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
525bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderIconURL,
526513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
527bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderEncodings,
528513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
529bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
530bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
531bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Checks that if the default search policy is invalid, that no elements of the
532bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// default search policy will be present.
533bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, Invalid) {
534513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const bad_search_url = "http://test.com/noSearchTerms";
535513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const suggest_url = "http://test.com/sugg?t={searchTerms}";
536513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const icon_url = "http://test.com/icon.jpg";
537513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const name = "MyName";
538513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const keyword = "MyKeyword";
539513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const char* const encodings = "UTF-16;UTF-8";
540bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  scoped_ptr<MockConfigurationPolicyProvider> provider(
541bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      new MockConfigurationPolicyProvider());
542bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
543513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEnabled,
544731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick      Value::CreateBooleanValue(true));
545731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  provider->AddPolicy(
546513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderSearchURL,
547bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(bad_search_url));
548bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
549513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderName,
550bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(name));
551bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
552513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderKeyword,
553bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(keyword));
554bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
555513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderSuggestURL,
556bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(suggest_url));
557bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
558513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderIconURL,
559bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(icon_url));
560bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  provider->AddPolicy(
561513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch      kPolicyDefaultSearchProviderEncodings,
562bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen      Value::CreateStringValue(encodings));
563bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
564731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(provider.get());
565bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE);
566513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  const DictionaryValue* const prefs = store.prefs();
567bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
568bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  std::string string_result;
569731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderEnabled,
570513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
571bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL,
572513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
573bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderName,
574513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
575bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderKeyword,
576513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
577bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL,
578513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
579bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderIconURL,
580513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
581bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderEncodings,
582513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch                                &string_result));
583bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
584bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
585bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for the Sync policy setting.
586bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreSyncTest : public testing::Test {
587bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
588bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
589bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreSyncTest, Default) {
590731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
591bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = false;
592bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kSyncManaged, &result));
593bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
594bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
595bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreSyncTest, Enabled) {
596731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
597513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  store.Apply(kPolicySyncDisabled, Value::CreateBooleanValue(false));
598bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Enabling Sync should not set the pref.
599bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = false;
600bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kSyncManaged, &result));
601bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
602bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
603bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreSyncTest, Disabled) {
604731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
605513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  store.Apply(kPolicySyncDisabled, Value::CreateBooleanValue(true));
606bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Sync should be flagged as managed.
607bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = false;
608bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kSyncManaged, &result));
609bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(result);
610bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
611bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
612bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen// Test cases for the AutoFill policy setting.
613bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsenclass ConfigurationPolicyPrefStoreAutoFillTest : public testing::Test {
614bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen};
615bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
616bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Default) {
617731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
618bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = false;
619bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result));
620bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
621bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
622bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Enabled) {
623731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
624513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  store.Apply(kPolicyAutoFillEnabled, Value::CreateBooleanValue(true));
625bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Enabling AutoFill should not set the pref.
626bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = false;
627bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result));
628bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
629bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
630bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian MonsenTEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Disabled) {
631731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  ConfigurationPolicyPrefStore store(NULL);
632513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  store.Apply(kPolicyAutoFillEnabled, Value::CreateBooleanValue(false));
633bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  // Disabling AutoFill should switch the pref to managed.
634bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  bool result = true;
635bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result));
636bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen  EXPECT_FALSE(result);
637bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}
638bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen
639bda42a81ee5f9b20d2bebedcf0bbef1e30e5b293Kristian Monsen}  // namespace policy
640