configuration_policy_pref_store_unittest.cc revision 731df977c0511bca2206b5f333555b1205ff1f43
1// Copyright (c) 2010 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 <gtest/gtest.h> 6 7#include "base/file_path.h" 8#include "chrome/browser/policy/configuration_policy_pref_store.h" 9#include "chrome/browser/policy/mock_configuration_policy_provider.h" 10#include "chrome/common/pref_names.h" 11#include "chrome/common/chrome_switches.h" 12 13namespace policy { 14 15// Holds a set of test parameters, consisting of pref name and policy type. 16class TypeAndName { 17 public: 18 TypeAndName(ConfigurationPolicyStore::PolicyType type, const char* pref_name) 19 : type_(type), 20 pref_name_(pref_name) {} 21 22 ConfigurationPolicyStore::PolicyType type() const { return type_; } 23 const char* pref_name() const { return pref_name_; } 24 25 private: 26 ConfigurationPolicyStore::PolicyType type_; 27 const char* pref_name_; 28}; 29 30// Test cases for list-valued policy settings. 31class ConfigurationPolicyPrefStoreListTest 32 : public testing::TestWithParam<TypeAndName> { 33}; 34 35TEST_P(ConfigurationPolicyPrefStoreListTest, GetDefault) { 36 ConfigurationPolicyPrefStore store(NULL); 37 ListValue* list = NULL; 38 EXPECT_FALSE(store.prefs()->GetList(GetParam().pref_name(), &list)); 39} 40 41TEST_P(ConfigurationPolicyPrefStoreListTest, SetValue) { 42 ConfigurationPolicyPrefStore store(NULL); 43 ListValue* in_value = new ListValue(); 44 in_value->Append(Value::CreateStringValue("test1")); 45 in_value->Append(Value::CreateStringValue("test2,")); 46 store.Apply(GetParam().type(), in_value); 47 ListValue* list = NULL; 48 EXPECT_TRUE(store.prefs()->GetList(GetParam().pref_name(), &list)); 49 ListValue::const_iterator current(list->begin()); 50 ListValue::const_iterator end(list->end()); 51 ASSERT_TRUE(current != end); 52 std::string value; 53 (*current)->GetAsString(&value); 54 EXPECT_EQ("test1", value); 55 ++current; 56 ASSERT_TRUE(current != end); 57 (*current)->GetAsString(&value); 58 EXPECT_EQ("test2,", value); 59 ++current; 60 EXPECT_TRUE(current == end); 61} 62 63INSTANTIATE_TEST_CASE_P( 64 ConfigurationPolicyPrefStoreListTestInstance, 65 ConfigurationPolicyPrefStoreListTest, 66 testing::Values( 67 TypeAndName(ConfigurationPolicyStore::kPolicyURLsToRestoreOnStartup, 68 prefs::kURLsToRestoreOnStartup), 69 TypeAndName(ConfigurationPolicyStore::kPolicyExtensionInstallAllowList, 70 prefs::kExtensionInstallAllowList), 71 TypeAndName(ConfigurationPolicyStore::kPolicyExtensionInstallDenyList, 72 prefs::kExtensionInstallDenyList), 73 TypeAndName(ConfigurationPolicyStore::kPolicyDisabledPlugins, 74 prefs::kPluginsPluginsBlacklist))); 75 76// Test cases for string-valued policy settings. 77class ConfigurationPolicyPrefStoreStringTest 78 : public testing::TestWithParam<TypeAndName> { 79}; 80 81TEST_P(ConfigurationPolicyPrefStoreStringTest, GetDefault) { 82 ConfigurationPolicyPrefStore store(NULL); 83 std::string result; 84 EXPECT_FALSE(store.prefs()->GetString(GetParam().pref_name(), &result)); 85} 86 87TEST_P(ConfigurationPolicyPrefStoreStringTest, SetValue) { 88 ConfigurationPolicyPrefStore store(NULL); 89 store.Apply(GetParam().type(), 90 Value::CreateStringValue("http://chromium.org")); 91 std::string result; 92 EXPECT_TRUE(store.prefs()->GetString(GetParam().pref_name(), &result)); 93 EXPECT_EQ(result, "http://chromium.org"); 94} 95 96INSTANTIATE_TEST_CASE_P( 97 ConfigurationPolicyPrefStoreStringTestInstance, 98 ConfigurationPolicyPrefStoreStringTest, 99 testing::Values( 100 TypeAndName(ConfigurationPolicyStore::kPolicyHomePage, 101 prefs::kHomePage), 102 TypeAndName(ConfigurationPolicyStore::kPolicyProxyServer, 103 prefs::kProxyServer), 104 TypeAndName(ConfigurationPolicyStore::kPolicyProxyPacUrl, 105 prefs::kProxyPacUrl), 106 TypeAndName(ConfigurationPolicyStore::kPolicyProxyBypassList, 107 prefs::kProxyBypassList), 108 TypeAndName(ConfigurationPolicyStore::kPolicyApplicationLocale, 109 prefs::kApplicationLocale))); 110 111// Test cases for boolean-valued policy settings. 112class ConfigurationPolicyPrefStoreBooleanTest 113 : public testing::TestWithParam<TypeAndName> { 114}; 115 116TEST_P(ConfigurationPolicyPrefStoreBooleanTest, GetDefault) { 117 ConfigurationPolicyPrefStore store(NULL); 118 bool result = false; 119 EXPECT_FALSE(store.prefs()->GetBoolean(GetParam().pref_name(), &result)); 120} 121 122TEST_P(ConfigurationPolicyPrefStoreBooleanTest, SetValue) { 123 ConfigurationPolicyPrefStore store(NULL); 124 store.Apply(GetParam().type(), Value::CreateBooleanValue(false)); 125 bool result = true; 126 EXPECT_TRUE(store.prefs()->GetBoolean(GetParam().pref_name(), &result)); 127 EXPECT_FALSE(result); 128 129 store.Apply(GetParam().type(), Value::CreateBooleanValue(true)); 130 result = false; 131 EXPECT_TRUE(store.prefs()->GetBoolean(GetParam().pref_name(), &result)); 132 EXPECT_TRUE(result); 133} 134 135INSTANTIATE_TEST_CASE_P( 136 ConfigurationPolicyPrefStoreBooleanTestInstance, 137 ConfigurationPolicyPrefStoreBooleanTest, 138 testing::Values( 139 TypeAndName(ConfigurationPolicyStore::kPolicyHomepageIsNewTabPage, 140 prefs::kHomePageIsNewTabPage), 141 TypeAndName(ConfigurationPolicyStore::kPolicyAlternateErrorPagesEnabled, 142 prefs::kAlternateErrorPagesEnabled), 143 TypeAndName(ConfigurationPolicyStore::kPolicySearchSuggestEnabled, 144 prefs::kSearchSuggestEnabled), 145 TypeAndName(ConfigurationPolicyStore::kPolicyDnsPrefetchingEnabled, 146 prefs::kDnsPrefetchingEnabled), 147 TypeAndName(ConfigurationPolicyStore::kPolicyDisableSpdy, 148 prefs::kDisableSpdy), 149 TypeAndName(ConfigurationPolicyStore::kPolicySafeBrowsingEnabled, 150 prefs::kSafeBrowsingEnabled), 151 TypeAndName(ConfigurationPolicyStore::kPolicyMetricsReportingEnabled, 152 prefs::kMetricsReportingEnabled), 153 TypeAndName(ConfigurationPolicyStore::kPolicyPasswordManagerEnabled, 154 prefs::kPasswordManagerEnabled), 155 TypeAndName(ConfigurationPolicyStore:: 156 kPolicyPasswordManagerAllowShowPasswords, 157 prefs::kPasswordManagerAllowShowPasswords), 158 TypeAndName(ConfigurationPolicyStore::kPolicyShowHomeButton, 159 prefs::kShowHomeButton), 160 TypeAndName(ConfigurationPolicyStore::kPolicyPrintingEnabled, 161 prefs::kPrintingEnabled), 162 TypeAndName(ConfigurationPolicyStore::kPolicyJavascriptEnabled, 163 prefs::kWebKitJavascriptEnabled), 164 TypeAndName(ConfigurationPolicyStore:: 165 kPolicySavingBrowserHistoryDisabled, 166 prefs::kSavingBrowserHistoryDisabled))); 167 168#if defined(OS_CHROMEOS) 169INSTANTIATE_TEST_CASE_P( 170 CrosConfigurationPolicyPrefStoreBooleanTestInstance, 171 ConfigurationPolicyPrefStoreBooleanTest, 172 testing::Values( 173 TypeAndName(ConfigurationPolicyStore:: 174 kPolicyChromeOsLockOnIdleSuspend, 175 prefs::kEnableScreenLock))); 176#endif // defined(OS_CHROMEOS) 177 178// Test cases for integer-valued policy settings. 179class ConfigurationPolicyPrefStoreIntegerTest 180 : public testing::TestWithParam<TypeAndName> { 181}; 182 183TEST_P(ConfigurationPolicyPrefStoreIntegerTest, GetDefault) { 184 ConfigurationPolicyPrefStore store(NULL); 185 int result = 0; 186 EXPECT_FALSE(store.prefs()->GetInteger(GetParam().pref_name(), &result)); 187} 188 189TEST_P(ConfigurationPolicyPrefStoreIntegerTest, SetValue) { 190 ConfigurationPolicyPrefStore store(NULL); 191 store.Apply(GetParam().type(), Value::CreateIntegerValue(2)); 192 int result = 0; 193 EXPECT_TRUE(store.prefs()->GetInteger(GetParam().pref_name(), &result)); 194 EXPECT_EQ(result, 2); 195} 196 197INSTANTIATE_TEST_CASE_P( 198 ConfigurationPolicyPrefStoreIntegerTestInstance, 199 ConfigurationPolicyPrefStoreIntegerTest, 200 testing::Values( 201 TypeAndName(ConfigurationPolicyStore::kPolicyRestoreOnStartup, 202 prefs::kRestoreOnStartup))); 203 204// Test cases for the proxy policy settings. 205class ConfigurationPolicyPrefStoreProxyTest : public testing::Test { 206}; 207 208TEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptions) { 209 scoped_ptr<MockConfigurationPolicyProvider> provider( 210 new MockConfigurationPolicyProvider()); 211 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyBypassList, 212 Value::CreateStringValue("http://chromium.org/override")); 213 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyPacUrl, 214 Value::CreateStringValue("http://chromium.org/proxy.pac")); 215 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServer, 216 Value::CreateStringValue("chromium.org")); 217 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServerMode, 218 Value::CreateIntegerValue( 219 ConfigurationPolicyStore::kPolicyManuallyConfiguredProxyMode)); 220 221 ConfigurationPolicyPrefStore store(provider.get()); 222 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 223 224 std::string string_result; 225 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyBypassList, 226 &string_result)); 227 EXPECT_EQ("http://chromium.org/override", string_result); 228 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); 229 EXPECT_EQ("http://chromium.org/proxy.pac", string_result); 230 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); 231 EXPECT_EQ("chromium.org", string_result); 232 bool bool_result; 233 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); 234 EXPECT_FALSE(bool_result); 235 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); 236 EXPECT_FALSE(bool_result); 237} 238 239TEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxy) { 240 scoped_ptr<MockConfigurationPolicyProvider> provider( 241 new MockConfigurationPolicyProvider()); 242 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyBypassList, 243 Value::CreateStringValue("http://chromium.org/override")); 244 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServerMode, 245 Value::CreateIntegerValue( 246 ConfigurationPolicyStore::kPolicyNoProxyServerMode)); 247 248 ConfigurationPolicyPrefStore store(provider.get()); 249 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 250 251 std::string string_result; 252 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, 253 &string_result)); 254 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); 255 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); 256 bool bool_result; 257 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); 258 EXPECT_TRUE(bool_result); 259 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); 260 EXPECT_FALSE(bool_result); 261} 262 263TEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxyReversedApplyOrder) { 264 scoped_ptr<MockConfigurationPolicyProvider> provider( 265 new MockConfigurationPolicyProvider()); 266 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServerMode, 267 Value::CreateIntegerValue( 268 ConfigurationPolicyStore::kPolicyNoProxyServerMode)); 269 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyBypassList, 270 Value::CreateStringValue("http://chromium.org/override")); 271 272 ConfigurationPolicyPrefStore store(provider.get()); 273 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 274 275 std::string string_result; 276 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, 277 &string_result)); 278 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); 279 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); 280 bool bool_result; 281 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); 282 EXPECT_TRUE(bool_result); 283 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); 284 EXPECT_FALSE(bool_result); 285} 286 287TEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetect) { 288 scoped_ptr<MockConfigurationPolicyProvider> provider( 289 new MockConfigurationPolicyProvider()); 290 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServerMode, 291 Value::CreateIntegerValue( 292 ConfigurationPolicyStore::kPolicyAutoDetectProxyMode)); 293 294 ConfigurationPolicyPrefStore store(provider.get()); 295 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 296 297 std::string string_result; 298 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, 299 &string_result)); 300 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); 301 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); 302 bool bool_result; 303 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); 304 EXPECT_FALSE(bool_result); 305 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); 306 EXPECT_TRUE(bool_result); 307} 308 309TEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystem) { 310 scoped_ptr<MockConfigurationPolicyProvider> provider( 311 new MockConfigurationPolicyProvider()); 312 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyBypassList, 313 Value::CreateStringValue("http://chromium.org/override")); 314 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServerMode, 315 Value::CreateIntegerValue( 316 ConfigurationPolicyStore::kPolicyUseSystemProxyMode)); 317 318 ConfigurationPolicyPrefStore store(provider.get()); 319 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 320 321 std::string string_result; 322 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, 323 &string_result)); 324 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); 325 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); 326 bool bool_result; 327 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); 328 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, 329 &bool_result)); 330} 331 332TEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystemReversedApplyOrder) { 333 scoped_ptr<MockConfigurationPolicyProvider> provider( 334 new MockConfigurationPolicyProvider()); 335 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyServerMode, 336 Value::CreateIntegerValue( 337 ConfigurationPolicyStore::kPolicyUseSystemProxyMode)); 338 provider->AddPolicy(ConfigurationPolicyStore::kPolicyProxyBypassList, 339 Value::CreateStringValue("http://chromium.org/override")); 340 341 ConfigurationPolicyPrefStore store(provider.get()); 342 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 343 344 std::string string_result; 345 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, 346 &string_result)); 347 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); 348 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); 349 bool bool_result; 350 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); 351 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, 352 &bool_result)); 353} 354 355class ConfigurationPolicyPrefStoreDefaultSearchTest : public testing::Test { 356}; 357 358// Checks that if the policy for default search is valid, i.e. there's a 359// search URL, that all the elements have been given proper defaults. 360TEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MinimallyDefined) { 361 const char* search_url = "http://test.com/search?t={searchTerms}"; 362 scoped_ptr<MockConfigurationPolicyProvider> provider( 363 new MockConfigurationPolicyProvider()); 364 provider->AddPolicy( 365 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, 366 Value::CreateBooleanValue(true)); 367 provider->AddPolicy( 368 ConfigurationPolicyStore::kPolicyDefaultSearchProviderSearchURL, 369 Value::CreateStringValue(search_url)); 370 371 ConfigurationPolicyPrefStore store(provider.get()); 372 373 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 374 DictionaryValue* prefs = store.prefs(); 375 376 std::string string_result; 377 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL, 378 &string_result)); 379 EXPECT_EQ(string_result, search_url); 380 381 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderName, 382 &string_result)); 383 EXPECT_EQ(string_result, "test.com"); 384 385 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderKeyword, 386 &string_result)); 387 EXPECT_EQ(string_result, ""); 388 389 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL, 390 &string_result)); 391 EXPECT_EQ(string_result, ""); 392 393 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderIconURL, 394 &string_result)); 395 EXPECT_EQ(string_result, ""); 396 397 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderEncodings, 398 &string_result)); 399 EXPECT_EQ(string_result, ""); 400} 401 402// Checks that for a fully defined search policy, all elements have been 403// read properly. 404TEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, FullyDefined) { 405 const char* search_url = "http://test.com/search?t={searchTerms}"; 406 const char* suggest_url = "http://test.com/sugg?={searchTerms}"; 407 const char* icon_url = "http://test.com/icon.jpg"; 408 const char* name = "MyName"; 409 const char* keyword = "MyKeyword"; 410 const char* encodings = "UTF-16;UTF-8"; 411 scoped_ptr<MockConfigurationPolicyProvider> provider( 412 new MockConfigurationPolicyProvider()); 413 provider->AddPolicy( 414 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, 415 Value::CreateBooleanValue(true)); 416 provider->AddPolicy( 417 ConfigurationPolicyStore::kPolicyDefaultSearchProviderSearchURL, 418 Value::CreateStringValue(search_url)); 419 provider->AddPolicy( 420 ConfigurationPolicyStore::kPolicyDefaultSearchProviderName, 421 Value::CreateStringValue(name)); 422 provider->AddPolicy( 423 ConfigurationPolicyStore::kPolicyDefaultSearchProviderKeyword, 424 Value::CreateStringValue(keyword)); 425 provider->AddPolicy( 426 ConfigurationPolicyStore::kPolicyDefaultSearchProviderSuggestURL, 427 Value::CreateStringValue(suggest_url)); 428 provider->AddPolicy( 429 ConfigurationPolicyStore::kPolicyDefaultSearchProviderIconURL, 430 Value::CreateStringValue(icon_url)); 431 provider->AddPolicy( 432 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEncodings, 433 Value::CreateStringValue(encodings)); 434 435 ConfigurationPolicyPrefStore store(provider.get()); 436 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 437 DictionaryValue* prefs = store.prefs(); 438 439 std::string result_search_url; 440 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL, 441 &result_search_url)); 442 EXPECT_EQ(result_search_url, search_url); 443 444 std::string result_name; 445 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderName, 446 &result_name)); 447 EXPECT_EQ(result_name, name); 448 449 std::string result_keyword; 450 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderKeyword, 451 &result_keyword)); 452 EXPECT_EQ(result_keyword, keyword); 453 454 std::string result_suggest_url; 455 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL, 456 &result_suggest_url)); 457 EXPECT_EQ(result_suggest_url, suggest_url); 458 459 std::string result_icon_url; 460 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderIconURL, 461 &result_icon_url)); 462 EXPECT_EQ(result_icon_url, icon_url); 463 464 std::string result_encodings; 465 EXPECT_TRUE(prefs->GetString(prefs::kDefaultSearchProviderEncodings, 466 &result_encodings)); 467 EXPECT_EQ(result_encodings, encodings); 468} 469 470// Checks that if the default search policy is missing, that no elements of the 471// default search policy will be present. 472TEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MissingUrl) { 473 const char* suggest_url = "http://test.com/sugg?t={searchTerms}"; 474 const char* icon_url = "http://test.com/icon.jpg"; 475 const char* name = "MyName"; 476 const char* keyword = "MyKeyword"; 477 const char* encodings = "UTF-16;UTF-8"; 478 scoped_ptr<MockConfigurationPolicyProvider> provider( 479 new MockConfigurationPolicyProvider()); 480 provider->AddPolicy( 481 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, 482 Value::CreateBooleanValue(true)); 483 provider->AddPolicy( 484 ConfigurationPolicyStore::kPolicyDefaultSearchProviderName, 485 Value::CreateStringValue(name)); 486 provider->AddPolicy( 487 ConfigurationPolicyStore::kPolicyDefaultSearchProviderKeyword, 488 Value::CreateStringValue(keyword)); 489 provider->AddPolicy( 490 ConfigurationPolicyStore::kPolicyDefaultSearchProviderSuggestURL, 491 Value::CreateStringValue(suggest_url)); 492 provider->AddPolicy( 493 ConfigurationPolicyStore::kPolicyDefaultSearchProviderIconURL, 494 Value::CreateStringValue(icon_url)); 495 provider->AddPolicy( 496 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEncodings, 497 Value::CreateStringValue(encodings)); 498 499 ConfigurationPolicyPrefStore store(provider.get()); 500 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 501 DictionaryValue* prefs = store.prefs(); 502 503 std::string string_result; 504 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL, 505 &string_result)); 506 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderName, 507 &string_result)); 508 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderKeyword, 509 &string_result)); 510 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL, 511 &string_result)); 512 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderIconURL, 513 &string_result)); 514 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderEncodings, 515 &string_result)); 516} 517 518// Checks that if the default search policy is invalid, that no elements of the 519// default search policy will be present. 520TEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, Invalid) { 521 const char* bad_search_url = "http://test.com/noSearchTerms"; 522 const char* suggest_url = "http://test.com/sugg?t={searchTerms}"; 523 const char* icon_url = "http://test.com/icon.jpg"; 524 const char* name = "MyName"; 525 const char* keyword = "MyKeyword"; 526 const char* encodings = "UTF-16;UTF-8"; 527 scoped_ptr<MockConfigurationPolicyProvider> provider( 528 new MockConfigurationPolicyProvider()); 529 provider->AddPolicy( 530 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEnabled, 531 Value::CreateBooleanValue(true)); 532 provider->AddPolicy( 533 ConfigurationPolicyStore::kPolicyDefaultSearchProviderSearchURL, 534 Value::CreateStringValue(bad_search_url)); 535 provider->AddPolicy( 536 ConfigurationPolicyStore::kPolicyDefaultSearchProviderName, 537 Value::CreateStringValue(name)); 538 provider->AddPolicy( 539 ConfigurationPolicyStore::kPolicyDefaultSearchProviderKeyword, 540 Value::CreateStringValue(keyword)); 541 provider->AddPolicy( 542 ConfigurationPolicyStore::kPolicyDefaultSearchProviderSuggestURL, 543 Value::CreateStringValue(suggest_url)); 544 provider->AddPolicy( 545 ConfigurationPolicyStore::kPolicyDefaultSearchProviderIconURL, 546 Value::CreateStringValue(icon_url)); 547 provider->AddPolicy( 548 ConfigurationPolicyStore::kPolicyDefaultSearchProviderEncodings, 549 Value::CreateStringValue(encodings)); 550 551 ConfigurationPolicyPrefStore store(provider.get()); 552 EXPECT_EQ(store.ReadPrefs(), PrefStore::PREF_READ_ERROR_NONE); 553 DictionaryValue* prefs = store.prefs(); 554 555 std::string string_result; 556 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderEnabled, 557 &string_result)); 558 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSearchURL, 559 &string_result)); 560 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderName, 561 &string_result)); 562 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderKeyword, 563 &string_result)); 564 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderSuggestURL, 565 &string_result)); 566 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderIconURL, 567 &string_result)); 568 EXPECT_FALSE(prefs->GetString(prefs::kDefaultSearchProviderEncodings, 569 &string_result)); 570} 571 572// Test cases for the Sync policy setting. 573class ConfigurationPolicyPrefStoreSyncTest : public testing::Test { 574}; 575 576TEST_F(ConfigurationPolicyPrefStoreSyncTest, Default) { 577 ConfigurationPolicyPrefStore store(NULL); 578 bool result = false; 579 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kSyncManaged, &result)); 580} 581 582TEST_F(ConfigurationPolicyPrefStoreSyncTest, Enabled) { 583 ConfigurationPolicyPrefStore store(NULL); 584 store.Apply(ConfigurationPolicyPrefStore::kPolicySyncDisabled, 585 Value::CreateBooleanValue(false)); 586 // Enabling Sync should not set the pref. 587 bool result = false; 588 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kSyncManaged, &result)); 589} 590 591TEST_F(ConfigurationPolicyPrefStoreSyncTest, Disabled) { 592 ConfigurationPolicyPrefStore store(NULL); 593 store.Apply(ConfigurationPolicyPrefStore::kPolicySyncDisabled, 594 Value::CreateBooleanValue(true)); 595 // Sync should be flagged as managed. 596 bool result = false; 597 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kSyncManaged, &result)); 598 EXPECT_TRUE(result); 599} 600 601// Test cases for the AutoFill policy setting. 602class ConfigurationPolicyPrefStoreAutoFillTest : public testing::Test { 603}; 604 605TEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Default) { 606 ConfigurationPolicyPrefStore store(NULL); 607 bool result = false; 608 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result)); 609} 610 611TEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Enabled) { 612 ConfigurationPolicyPrefStore store(NULL); 613 store.Apply(ConfigurationPolicyPrefStore::kPolicyAutoFillEnabled, 614 Value::CreateBooleanValue(true)); 615 // Enabling AutoFill should not set the pref. 616 bool result = false; 617 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result)); 618} 619 620TEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Disabled) { 621 ConfigurationPolicyPrefStore store(NULL); 622 store.Apply(ConfigurationPolicyPrefStore::kPolicyAutoFillEnabled, 623 Value::CreateBooleanValue(false)); 624 // Disabling AutoFill should switch the pref to managed. 625 bool result = true; 626 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result)); 627 EXPECT_FALSE(result); 628} 629 630} // namespace policy 631