| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
| 6 | 6 |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "chrome/browser/policy/configuration_policy_pref_store.h" | 8 #include "chrome/browser/policy/configuration_policy_pref_store.h" |
| 9 #include "chrome/browser/policy/mock_configuration_policy_provider.h" | 9 #include "chrome/browser/policy/mock_configuration_policy_provider.h" |
| 10 #include "chrome/browser/prefs/proxy_prefs.h" |
| 10 #include "chrome/common/pref_names.h" | 11 #include "chrome/common/pref_names.h" |
| 11 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
| 12 | 13 |
| 13 namespace policy { | 14 namespace policy { |
| 14 | 15 |
| 15 // Holds a set of test parameters, consisting of pref name and policy type. | 16 // Holds a set of test parameters, consisting of pref name and policy type. |
| 16 class TypeAndName { | 17 class TypeAndName { |
| 17 public: | 18 public: |
| 18 TypeAndName(ConfigurationPolicyType type, const char* pref_name) | 19 TypeAndName(ConfigurationPolicyType type, const char* pref_name) |
| 19 : type_(type), | 20 : type_(type), |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 | 217 |
| 217 INSTANTIATE_TEST_CASE_P( | 218 INSTANTIATE_TEST_CASE_P( |
| 218 ConfigurationPolicyPrefStoreIntegerTestInstance, | 219 ConfigurationPolicyPrefStoreIntegerTestInstance, |
| 219 ConfigurationPolicyPrefStoreIntegerTest, | 220 ConfigurationPolicyPrefStoreIntegerTest, |
| 220 testing::Values( | 221 testing::Values( |
| 221 TypeAndName(kPolicyRestoreOnStartup, | 222 TypeAndName(kPolicyRestoreOnStartup, |
| 222 prefs::kRestoreOnStartup))); | 223 prefs::kRestoreOnStartup))); |
| 223 | 224 |
| 224 // Test cases for the proxy policy settings. | 225 // Test cases for the proxy policy settings. |
| 225 class ConfigurationPolicyPrefStoreProxyTest : public testing::Test { | 226 class ConfigurationPolicyPrefStoreProxyTest : public testing::Test { |
| 227 protected: |
| 228 // Verify that all the proxy prefs are set to the speicifed expected values. |
| 229 void VerifyEnabledProxyPrefs( |
| 230 const ConfigurationPolicyPrefStore& store, |
| 231 const std::string& expected_proxy_server, |
| 232 const std::string& expected_proxy_pac_url, |
| 233 const std::string& expected_proxy_bypass_list, |
| 234 const ProxyPrefs::ProxyServerMode& expected_proxy_mode) { |
| 235 std::string string_result; |
| 236 |
| 237 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); |
| 238 EXPECT_EQ(expected_proxy_server, string_result); |
| 239 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); |
| 240 EXPECT_EQ(expected_proxy_pac_url, string_result); |
| 241 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyBypassList, |
| 242 &string_result)); |
| 243 EXPECT_EQ(expected_proxy_bypass_list, string_result); |
| 244 int int_result = -1; |
| 245 EXPECT_TRUE( |
| 246 store.prefs()->GetInteger(prefs::kProxyServerMode, &int_result)); |
| 247 EXPECT_EQ(expected_proxy_mode, int_result); |
| 248 } |
| 249 |
| 250 // Verify that kProxyServerMode is set to its expected value, and all the |
| 251 // other proxy prefs are unset. |
| 252 void VerifyDisabledProxyPrefs( |
| 253 const ConfigurationPolicyPrefStore& store, |
| 254 const ProxyPrefs::ProxyServerMode& expected_proxy_mode) { |
| 255 std::string string_result; |
| 256 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); |
| 257 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); |
| 258 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, |
| 259 &string_result)); |
| 260 int int_result = -1; |
| 261 EXPECT_TRUE( |
| 262 store.prefs()->GetInteger(prefs::kProxyServerMode, &int_result)); |
| 263 EXPECT_EQ(expected_proxy_mode, int_result); |
| 264 } |
| 265 |
| 266 void AddProxyPolicies( |
| 267 MockConfigurationPolicyProvider* provider, |
| 268 const std::string& proxy_server, |
| 269 const std::string& proxy_pac_url, |
| 270 const std::string& proxy_bypass_list) { |
| 271 provider->AddPolicy(kPolicyProxyBypassList, |
| 272 Value::CreateStringValue(proxy_bypass_list)); |
| 273 provider->AddPolicy(kPolicyProxyPacUrl, |
| 274 Value::CreateStringValue(proxy_pac_url)); |
| 275 provider->AddPolicy(kPolicyProxyServer, |
| 276 Value::CreateStringValue(proxy_server)); |
| 277 } |
| 226 }; | 278 }; |
| 227 | 279 |
| 228 TEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptions) { | 280 TEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptions) { |
| 229 scoped_ptr<MockConfigurationPolicyProvider> provider( | 281 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 230 new MockConfigurationPolicyProvider()); | 282 new MockConfigurationPolicyProvider()); |
| 231 provider->AddPolicy(kPolicyProxyBypassList, | 283 AddProxyPolicies(provider.get(), |
| 232 Value::CreateStringValue("http://chromium.org/override")); | 284 "chromium.org", |
| 233 provider->AddPolicy(kPolicyProxyPacUrl, | 285 "http://short.org/proxy.pac", |
| 234 Value::CreateStringValue("http://short.org/proxy.pac")); | 286 "http://chromium.org/override"); |
| 235 provider->AddPolicy(kPolicyProxyServer, | |
| 236 Value::CreateStringValue("chromium.org")); | |
| 237 provider->AddPolicy(kPolicyProxyServerMode, | 287 provider->AddPolicy(kPolicyProxyServerMode, |
| 238 Value::CreateIntegerValue( | 288 Value::CreateIntegerValue(ProxyPrefs::MANUAL)); |
| 239 kPolicyManuallyConfiguredProxyMode)); | |
| 240 | 289 |
| 241 ConfigurationPolicyPrefStore store(provider.get()); | 290 ConfigurationPolicyPrefStore store(provider.get()); |
| 291 VerifyEnabledProxyPrefs( |
| 292 store, |
| 293 "chromium.org", |
| 294 "http://short.org/proxy.pac", |
| 295 "http://chromium.org/override", |
| 296 ProxyPrefs::MANUAL); |
| 297 } |
| 242 | 298 |
| 243 std::string string_result; | 299 TEST_F(ConfigurationPolicyPrefStoreProxyTest, ManualOptionsReversedApplyOrder) { |
| 244 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyBypassList, | 300 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 245 &string_result)); | 301 new MockConfigurationPolicyProvider()); |
| 246 EXPECT_EQ("http://chromium.org/override", string_result); | 302 provider->AddPolicy(kPolicyProxyServerMode, |
| 247 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); | 303 Value::CreateIntegerValue(ProxyPrefs::MANUAL)); |
| 248 EXPECT_EQ("http://short.org/proxy.pac", string_result); | 304 AddProxyPolicies(provider.get(), |
| 249 EXPECT_TRUE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); | 305 "chromium.org", |
| 250 EXPECT_EQ("chromium.org", string_result); | 306 "http://short.org/proxy.pac", |
| 251 bool bool_result; | 307 "http://chromium.org/override"); |
| 252 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); | 308 |
| 253 EXPECT_FALSE(bool_result); | 309 ConfigurationPolicyPrefStore store(provider.get()); |
| 254 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); | 310 VerifyEnabledProxyPrefs( |
| 255 EXPECT_FALSE(bool_result); | 311 store, |
| 312 "chromium.org", |
| 313 "http://short.org/proxy.pac", |
| 314 "http://chromium.org/override", |
| 315 ProxyPrefs::MANUAL); |
| 256 } | 316 } |
| 257 | 317 |
| 258 TEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxy) { | 318 TEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxy) { |
| 259 scoped_ptr<MockConfigurationPolicyProvider> provider( | 319 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 260 new MockConfigurationPolicyProvider()); | 320 new MockConfigurationPolicyProvider()); |
| 261 provider->AddPolicy(kPolicyProxyBypassList, | 321 AddProxyPolicies(provider.get(), |
| 262 Value::CreateStringValue("http://chromium.org/override")); | 322 "chromium.org", |
| 323 "http://short.org/proxy.pac", |
| 324 "http://chromium.org/override"); |
| 263 provider->AddPolicy(kPolicyProxyServerMode, | 325 provider->AddPolicy(kPolicyProxyServerMode, |
| 264 Value::CreateIntegerValue( | 326 Value::CreateIntegerValue(ProxyPrefs::DISABLED)); |
| 265 kPolicyNoProxyServerMode)); | |
| 266 | 327 |
| 267 ConfigurationPolicyPrefStore store(provider.get()); | 328 ConfigurationPolicyPrefStore store(provider.get()); |
| 268 | 329 VerifyDisabledProxyPrefs(store, ProxyPrefs::DISABLED); |
| 269 std::string string_result; | |
| 270 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, | |
| 271 &string_result)); | |
| 272 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); | |
| 273 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); | |
| 274 bool bool_result; | |
| 275 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); | |
| 276 EXPECT_TRUE(bool_result); | |
| 277 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); | |
| 278 EXPECT_FALSE(bool_result); | |
| 279 } | 330 } |
| 280 | 331 |
| 281 TEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxyReversedApplyOrder) { | 332 TEST_F(ConfigurationPolicyPrefStoreProxyTest, NoProxyReversedApplyOrder) { |
| 282 scoped_ptr<MockConfigurationPolicyProvider> provider( | 333 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 283 new MockConfigurationPolicyProvider()); | 334 new MockConfigurationPolicyProvider()); |
| 284 provider->AddPolicy(kPolicyProxyServerMode, | 335 provider->AddPolicy(kPolicyProxyServerMode, |
| 285 Value::CreateIntegerValue( | 336 Value::CreateIntegerValue(ProxyPrefs::DISABLED)); |
| 286 kPolicyNoProxyServerMode)); | 337 AddProxyPolicies(provider.get(), |
| 287 provider->AddPolicy(kPolicyProxyBypassList, | 338 "chromium.org", |
| 288 Value::CreateStringValue("http://chromium.org/override")); | 339 "http://short.org/proxy.pac", |
| 340 "http://chromium.org/override"); |
| 289 | 341 |
| 290 ConfigurationPolicyPrefStore store(provider.get()); | 342 ConfigurationPolicyPrefStore store(provider.get()); |
| 291 | 343 VerifyDisabledProxyPrefs(store, ProxyPrefs::DISABLED); |
| 292 std::string string_result; | |
| 293 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, | |
| 294 &string_result)); | |
| 295 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); | |
| 296 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); | |
| 297 bool bool_result; | |
| 298 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); | |
| 299 EXPECT_TRUE(bool_result); | |
| 300 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); | |
| 301 EXPECT_FALSE(bool_result); | |
| 302 } | 344 } |
| 303 | 345 |
| 304 TEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetect) { | 346 TEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetect) { |
| 305 scoped_ptr<MockConfigurationPolicyProvider> provider( | 347 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 306 new MockConfigurationPolicyProvider()); | 348 new MockConfigurationPolicyProvider()); |
| 349 AddProxyPolicies(provider.get(), |
| 350 "chromium.org", |
| 351 "http://short.org/proxy.pac", |
| 352 "http://chromium.org/override"); |
| 307 provider->AddPolicy(kPolicyProxyServerMode, | 353 provider->AddPolicy(kPolicyProxyServerMode, |
| 308 Value::CreateIntegerValue( | 354 Value::CreateIntegerValue(ProxyPrefs::AUTO_DETECT)); |
| 309 kPolicyAutoDetectProxyMode)); | |
| 310 | 355 |
| 311 ConfigurationPolicyPrefStore store(provider.get()); | 356 ConfigurationPolicyPrefStore store(provider.get()); |
| 357 VerifyEnabledProxyPrefs( |
| 358 store, |
| 359 "chromium.org", |
| 360 "http://short.org/proxy.pac", |
| 361 "http://chromium.org/override", |
| 362 ProxyPrefs::AUTO_DETECT); |
| 363 } |
| 312 | 364 |
| 313 std::string string_result; | 365 TEST_F(ConfigurationPolicyPrefStoreProxyTest, AutoDetectReversedApplyOrder) { |
| 314 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, | 366 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 315 &string_result)); | 367 new MockConfigurationPolicyProvider()); |
| 316 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); | 368 provider->AddPolicy(kPolicyProxyServerMode, |
| 317 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); | 369 Value::CreateIntegerValue(ProxyPrefs::AUTO_DETECT)); |
| 318 bool bool_result; | 370 AddProxyPolicies(provider.get(), |
| 319 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); | 371 "chromium.org", |
| 320 EXPECT_FALSE(bool_result); | 372 "http://short.org/proxy.pac", |
| 321 EXPECT_TRUE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, &bool_result)); | 373 "http://chromium.org/override"); |
| 322 EXPECT_TRUE(bool_result); | 374 |
| 375 ConfigurationPolicyPrefStore store(provider.get()); |
| 376 VerifyEnabledProxyPrefs( |
| 377 store, |
| 378 "chromium.org", |
| 379 "http://short.org/proxy.pac", |
| 380 "http://chromium.org/override", |
| 381 ProxyPrefs::AUTO_DETECT); |
| 323 } | 382 } |
| 324 | 383 |
| 325 TEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystem) { | 384 TEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystem) { |
| 326 scoped_ptr<MockConfigurationPolicyProvider> provider( | 385 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 327 new MockConfigurationPolicyProvider()); | 386 new MockConfigurationPolicyProvider()); |
| 328 provider->AddPolicy(kPolicyProxyBypassList, | 387 AddProxyPolicies(provider.get(), |
| 329 Value::CreateStringValue("http://chromium.org/override")); | 388 "chromium.org", |
| 389 "http://short.org/proxy.pac", |
| 390 "http://chromium.org/override"); |
| 330 provider->AddPolicy(kPolicyProxyServerMode, | 391 provider->AddPolicy(kPolicyProxyServerMode, |
| 331 Value::CreateIntegerValue( | 392 Value::CreateIntegerValue(ProxyPrefs::SYSTEM)); |
| 332 kPolicyUseSystemProxyMode)); | |
| 333 | 393 |
| 334 ConfigurationPolicyPrefStore store(provider.get()); | 394 ConfigurationPolicyPrefStore store(provider.get()); |
| 335 | 395 VerifyDisabledProxyPrefs(store, ProxyPrefs::SYSTEM); |
| 336 std::string string_result; | |
| 337 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, | |
| 338 &string_result)); | |
| 339 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); | |
| 340 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); | |
| 341 bool bool_result; | |
| 342 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); | |
| 343 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, | |
| 344 &bool_result)); | |
| 345 } | 396 } |
| 346 | 397 |
| 347 TEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystemReversedApplyOrder) { | 398 TEST_F(ConfigurationPolicyPrefStoreProxyTest, UseSystemReversedApplyOrder) { |
| 348 scoped_ptr<MockConfigurationPolicyProvider> provider( | 399 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| 349 new MockConfigurationPolicyProvider()); | 400 new MockConfigurationPolicyProvider()); |
| 350 provider->AddPolicy(kPolicyProxyServerMode, | 401 provider->AddPolicy(kPolicyProxyServerMode, |
| 351 Value::CreateIntegerValue( | 402 Value::CreateIntegerValue(ProxyPrefs::SYSTEM)); |
| 352 kPolicyUseSystemProxyMode)); | 403 AddProxyPolicies(provider.get(), |
| 353 provider->AddPolicy(kPolicyProxyBypassList, | 404 "chromium.org", |
| 354 Value::CreateStringValue("http://chromium.org/override")); | 405 "http://short.org/proxy.pac", |
| 406 "http://chromium.org/override"); |
| 355 | 407 |
| 356 ConfigurationPolicyPrefStore store(provider.get()); | 408 ConfigurationPolicyPrefStore store(provider.get()); |
| 357 | 409 VerifyDisabledProxyPrefs(store, ProxyPrefs::SYSTEM); |
| 358 std::string string_result; | |
| 359 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyBypassList, | |
| 360 &string_result)); | |
| 361 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyPacUrl, &string_result)); | |
| 362 EXPECT_FALSE(store.prefs()->GetString(prefs::kProxyServer, &string_result)); | |
| 363 bool bool_result; | |
| 364 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kNoProxyServer, &bool_result)); | |
| 365 EXPECT_FALSE(store.prefs()->GetBoolean(prefs::kProxyAutoDetect, | |
| 366 &bool_result)); | |
| 367 } | 410 } |
| 368 | 411 |
| 369 class ConfigurationPolicyPrefStoreDefaultSearchTest : public testing::Test { | 412 class ConfigurationPolicyPrefStoreDefaultSearchTest : public testing::Test { |
| 370 }; | 413 }; |
| 371 | 414 |
| 372 // Checks that if the policy for default search is valid, i.e. there's a | 415 // Checks that if the policy for default search is valid, i.e. there's a |
| 373 // search URL, that all the elements have been given proper defaults. | 416 // search URL, that all the elements have been given proper defaults. |
| 374 TEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MinimallyDefined) { | 417 TEST_F(ConfigurationPolicyPrefStoreDefaultSearchTest, MinimallyDefined) { |
| 375 const char* const search_url = "http://test.com/search?t={searchTerms}"; | 418 const char* const search_url = "http://test.com/search?t={searchTerms}"; |
| 376 scoped_ptr<MockConfigurationPolicyProvider> provider( | 419 scoped_ptr<MockConfigurationPolicyProvider> provider( |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 | 665 |
| 623 TEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Disabled) { | 666 TEST_F(ConfigurationPolicyPrefStoreAutoFillTest, Disabled) { |
| 624 store_.Apply(kPolicyAutoFillEnabled, Value::CreateBooleanValue(false)); | 667 store_.Apply(kPolicyAutoFillEnabled, Value::CreateBooleanValue(false)); |
| 625 // Disabling AutoFill should switch the pref to managed. | 668 // Disabling AutoFill should switch the pref to managed. |
| 626 bool result = true; | 669 bool result = true; |
| 627 EXPECT_TRUE(store_.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result)); | 670 EXPECT_TRUE(store_.prefs()->GetBoolean(prefs::kAutoFillEnabled, &result)); |
| 628 EXPECT_FALSE(result); | 671 EXPECT_FALSE(result); |
| 629 } | 672 } |
| 630 | 673 |
| 631 } // namespace policy | 674 } // namespace policy |
| OLD | NEW |