Index: chrome/browser/policy/cloud_policy_provider_unittest.cc |
diff --git a/chrome/browser/policy/cloud_policy_provider_unittest.cc b/chrome/browser/policy/cloud_policy_provider_unittest.cc |
deleted file mode 100644 |
index 2efb4289269440c7aebc962bb9286b018fdcf9ef..0000000000000000000000000000000000000000 |
--- a/chrome/browser/policy/cloud_policy_provider_unittest.cc |
+++ /dev/null |
@@ -1,220 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/policy/cloud_policy_provider.h" |
- |
-#include "base/basictypes.h" |
-#include "base/values.h" |
-#include "chrome/browser/policy/browser_policy_connector.h" |
-#include "chrome/browser/policy/cloud_policy_cache_base.h" |
-#include "chrome/browser/policy/mock_configuration_policy_provider.h" |
-#include "chrome/browser/policy/policy_bundle.h" |
-#include "chrome/browser/policy/policy_map.h" |
-#include "policy/policy_constants.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using testing::Mock; |
- |
-namespace em = enterprise_management; |
- |
-namespace policy { |
- |
-class MockCloudPolicyCache : public CloudPolicyCacheBase { |
- public: |
- MockCloudPolicyCache() {} |
- virtual ~MockCloudPolicyCache() {} |
- |
- virtual void Load() OVERRIDE {} |
- |
- virtual bool SetPolicy(const em::PolicyFetchResponse& policy) OVERRIDE { |
- return true; |
- } |
- |
- virtual void SetUnmanaged() OVERRIDE { |
- is_unmanaged_ = true; |
- } |
- |
- virtual bool DecodePolicyData(const em::PolicyData& policy_data, |
- PolicyMap* policies) OVERRIDE { |
- return true; |
- } |
- |
- PolicyMap* mutable_policy() { |
- return &policies_; |
- } |
- |
- // Make these methods public. |
- using CloudPolicyCacheBase::SetReady; |
- using CloudPolicyCacheBase::NotifyObservers; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockCloudPolicyCache); |
-}; |
- |
-class CloudPolicyProviderTest : public testing::Test { |
- protected: |
- CloudPolicyProviderTest() |
- : cloud_policy_provider_(&browser_policy_connector_) {} |
- |
- virtual void SetUp() OVERRIDE { |
- cloud_policy_provider_.Init(); |
- cloud_policy_provider_.AddObserver(&observer_); |
- } |
- |
- virtual void TearDown() OVERRIDE { |
- cloud_policy_provider_.RemoveObserver(&observer_); |
- cloud_policy_provider_.Shutdown(); |
- browser_policy_connector_.Shutdown(); |
- } |
- |
- void AddUserCache() { |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- cloud_policy_provider_.SetUserPolicyCache(&user_policy_cache_); |
- Mock::VerifyAndClearExpectations(&observer_); |
- } |
- |
- void AddDeviceCache() { |
-#if defined(OS_CHROMEOS) |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- cloud_policy_provider_.SetDevicePolicyCache(&device_policy_cache_); |
- Mock::VerifyAndClearExpectations(&observer_); |
-#endif |
- } |
- |
- void SetUserCacheReady() { |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- user_policy_cache_.SetReady(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(user_policy_cache_.IsReady()); |
- } |
- |
- void SetDeviceCacheReady() { |
-#if defined(OS_CHROMEOS) |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- device_policy_cache_.SetReady(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- EXPECT_TRUE(device_policy_cache_.IsReady()); |
-#endif |
- } |
- |
- BrowserPolicyConnector browser_policy_connector_; |
- |
- MockCloudPolicyCache user_policy_cache_; |
-#if defined(OS_CHROMEOS) |
- MockCloudPolicyCache device_policy_cache_; |
-#endif |
- |
- CloudPolicyProvider cloud_policy_provider_; |
- MockConfigurationPolicyObserver observer_; |
-}; |
- |
-TEST_F(CloudPolicyProviderTest, Initialization) { |
- EXPECT_FALSE(cloud_policy_provider_.IsInitializationComplete()); |
- // The provider only becomes initialized when it has all caches, and the |
- // caches are ready too. |
- AddDeviceCache(); |
- EXPECT_FALSE(cloud_policy_provider_.IsInitializationComplete()); |
- SetDeviceCacheReady(); |
- EXPECT_FALSE(cloud_policy_provider_.IsInitializationComplete()); |
- AddUserCache(); |
- EXPECT_FALSE(user_policy_cache_.IsReady()); |
- EXPECT_FALSE(cloud_policy_provider_.IsInitializationComplete()); |
- PolicyBundle expected_bundle; |
- EXPECT_TRUE(cloud_policy_provider_.policies().Equals(expected_bundle)); |
- SetUserCacheReady(); |
- EXPECT_TRUE(cloud_policy_provider_.IsInitializationComplete()); |
- EXPECT_TRUE(cloud_policy_provider_.policies().Equals(expected_bundle)); |
- |
- const std::string kUrl("http://chromium.org"); |
- user_policy_cache_.mutable_policy()->Set(key::kHomepageLocation, |
- POLICY_LEVEL_MANDATORY, |
- POLICY_SCOPE_USER, |
- Value::CreateStringValue(kUrl)); |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- user_policy_cache_.NotifyObservers(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- expected_bundle.Get(POLICY_DOMAIN_CHROME, "") |
- .Set(key::kHomepageLocation, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- base::Value::CreateStringValue(kUrl)); |
- EXPECT_TRUE(cloud_policy_provider_.policies().Equals(expected_bundle)); |
-} |
- |
-TEST_F(CloudPolicyProviderTest, RefreshPolicies) { |
- // OnUpdatePolicy is called when the provider doesn't have any caches. |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(1); |
- cloud_policy_provider_.RefreshPolicies(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- // OnUpdatePolicy is called when all the caches have updated. |
- AddUserCache(); |
- |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(0); |
- cloud_policy_provider_.RefreshPolicies(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(1); |
- cloud_policy_provider_.OnCacheUpdate(&user_policy_cache_); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
-#if defined(OS_CHROMEOS) |
- AddDeviceCache(); |
- |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(0); |
- cloud_policy_provider_.RefreshPolicies(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- // Updating one of the caches is not enough, both must be updated. |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(0); |
- cloud_policy_provider_.OnCacheUpdate(&user_policy_cache_); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- // If a cache refreshes more than once, the provider should still wait for |
- // the others before firing the update. |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(0); |
- cloud_policy_provider_.OnCacheUpdate(&user_policy_cache_); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)).Times(1); |
- cloud_policy_provider_.OnCacheUpdate(&device_policy_cache_); |
- Mock::VerifyAndClearExpectations(&observer_); |
-#endif |
-} |
- |
-#if defined(OS_CHROMEOS) |
-TEST_F(CloudPolicyProviderTest, MergeProxyPolicies) { |
- AddDeviceCache(); |
- AddUserCache(); |
- SetDeviceCacheReady(); |
- SetUserCacheReady(); |
- EXPECT_TRUE(cloud_policy_provider_.IsInitializationComplete()); |
- PolicyBundle expected_bundle; |
- EXPECT_TRUE(cloud_policy_provider_.policies().Equals(expected_bundle)); |
- |
- // User policy takes precedence over device policy. |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- device_policy_cache_.mutable_policy()->Set( |
- key::kProxyMode, POLICY_LEVEL_RECOMMENDED, POLICY_SCOPE_MACHINE, |
- Value::CreateStringValue("device mode")); |
- device_policy_cache_.NotifyObservers(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- EXPECT_CALL(observer_, OnUpdatePolicy(&cloud_policy_provider_)); |
- user_policy_cache_.mutable_policy()->Set( |
- key::kProxyMode, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- Value::CreateStringValue("user mode")); |
- user_policy_cache_.NotifyObservers(); |
- Mock::VerifyAndClearExpectations(&observer_); |
- |
- // The deprecated proxy policies are converted to the new ProxySettings. |
- base::DictionaryValue* proxy_settings = new base::DictionaryValue(); |
- proxy_settings->SetString(key::kProxyMode, "user mode"); |
- expected_bundle.Get(POLICY_DOMAIN_CHROME, "") |
- .Set(key::kProxySettings, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER, |
- proxy_settings); |
- EXPECT_TRUE(cloud_policy_provider_.policies().Equals(expected_bundle)); |
-} |
-#endif |
- |
-} // namespace policy |