| Index: chrome/browser/policy/device_management_policy_provider_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/policy/device_management_policy_provider_unittest.cc (revision 67530)
|
| +++ chrome/browser/policy/device_management_policy_provider_unittest.cc (working copy)
|
| @@ -2,13 +2,11 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "base/file_util.h"
|
| #include "base/message_loop.h"
|
| #include "base/scoped_temp_dir.h"
|
| #include "chrome/browser/browser_thread.h"
|
| #include "chrome/browser/net/gaia/token_service.h"
|
| #include "chrome/browser/policy/configuration_policy_pref_store.h"
|
| -#include "chrome/browser/policy/device_management_policy_cache.h"
|
| #include "chrome/browser/policy/device_management_policy_provider.h"
|
| #include "chrome/browser/policy/mock_configuration_policy_store.h"
|
| #include "chrome/browser/policy/mock_device_management_backend.h"
|
| @@ -38,42 +36,24 @@
|
|
|
| virtual void SetUp() {
|
| profile_.reset(new TestingProfile);
|
| + CreateNewBackend();
|
| CreateNewProvider();
|
| - EXPECT_TRUE(provider_->waiting_for_initial_policies());
|
| - loop_.RunAllPending();
|
| }
|
|
|
| - void CreateNewProvider() {
|
| + void CreateNewBackend() {
|
| backend_ = new MockDeviceManagementBackend;
|
| - provider_.reset(new DeviceManagementPolicyProvider(
|
| - ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
|
| - backend_,
|
| - profile_.get()));
|
| - provider_->SetDeviceTokenFetcher(
|
| - new TestingDeviceTokenFetcher(backend_,
|
| - profile_.get(),
|
| - provider_->GetTokenPath()));
|
| }
|
|
|
| - void CreateNewProvider(int64 policy_refresh_rate_ms,
|
| - int64 policy_refresh_max_earlier_ms,
|
| - int64 policy_refresh_error_delay_ms,
|
| - int64 token_fetch_error_delay_ms,
|
| - int64 unmanaged_device_refresh_rate_ms) {
|
| - backend_ = new MockDeviceManagementBackend;
|
| + void CreateNewProvider() {
|
| provider_.reset(new DeviceManagementPolicyProvider(
|
| ConfigurationPolicyPrefStore::GetChromePolicyDefinitionList(),
|
| backend_,
|
| - profile_.get(),
|
| - policy_refresh_rate_ms,
|
| - policy_refresh_max_earlier_ms,
|
| - policy_refresh_error_delay_ms,
|
| - token_fetch_error_delay_ms,
|
| - unmanaged_device_refresh_rate_ms));
|
| + profile_.get()));
|
| provider_->SetDeviceTokenFetcher(
|
| new TestingDeviceTokenFetcher(backend_,
|
| profile_.get(),
|
| provider_->GetTokenPath()));
|
| + loop_.RunAllPending();
|
| }
|
|
|
| void SimulateSuccessfulLoginAndRunPending() {
|
| @@ -95,7 +75,6 @@
|
| MockDeviceManagementBackendSucceedBooleanPolicy(
|
| key::kDisableSpdy, true));
|
| SimulateSuccessfulLoginAndRunPending();
|
| - EXPECT_FALSE(provider_->waiting_for_initial_policies());
|
| EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
|
| provider_->Provide(&store);
|
| ASSERT_EQ(1U, store.policy_map().size());
|
| @@ -111,13 +90,19 @@
|
| scoped_ptr<DeviceManagementPolicyProvider> provider_;
|
|
|
| protected:
|
| - DeviceManagementPolicyCache* cache(DeviceManagementPolicyProvider* provider) {
|
| - return provider->cache_.get();
|
| + void SetRefreshDelays(DeviceManagementPolicyProvider* provider,
|
| + int64 policy_refresh_rate_ms,
|
| + int64 policy_refresh_max_earlier_ms,
|
| + int64 policy_refresh_error_delay_ms,
|
| + int64 token_fetch_error_delay_ms) {
|
| + provider->set_policy_refresh_rate_ms(policy_refresh_rate_ms);
|
| + provider->set_policy_refresh_max_earlier_ms(policy_refresh_max_earlier_ms);
|
| + provider->set_policy_refresh_error_delay_ms(policy_refresh_error_delay_ms);
|
| + provider->set_token_fetch_error_delay_ms(token_fetch_error_delay_ms);
|
| }
|
|
|
| - MessageLoop loop_;
|
| -
|
| private:
|
| + MessageLoop loop_;
|
| BrowserThread ui_thread_;
|
| BrowserThread file_thread_;
|
| scoped_ptr<Profile> profile_;
|
| @@ -132,14 +117,12 @@
|
| EXPECT_CALL(store, Apply(_, _)).Times(0);
|
| provider_->Provide(&store);
|
| EXPECT_TRUE(store.policy_map().empty());
|
| - EXPECT_TRUE(provider_->waiting_for_initial_policies());
|
| }
|
|
|
| // If the login is successful and there's no previously-fetched policy, the
|
| // policy should be fetched from the server and should be available the first
|
| // time the Provide method is called.
|
| TEST_F(DeviceManagementPolicyProviderTest, InitialProvideWithLogin) {
|
| - EXPECT_TRUE(provider_->waiting_for_initial_policies());
|
| SimulateSuccessfulInitialPolicyFetch();
|
| }
|
|
|
| @@ -165,21 +148,21 @@
|
|
|
| // Simulate a app relaunch by constructing a new provider. Policy should be
|
| // refreshed (since that might be the purpose of the app relaunch).
|
| - CreateNewProvider();
|
| + CreateNewBackend();
|
| EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
|
| MockDeviceManagementBackendSucceedBooleanPolicy(
|
| key::kDisableSpdy, true));
|
| - loop_.RunAllPending();
|
| + CreateNewProvider();
|
| Mock::VerifyAndClearExpectations(backend_);
|
|
|
| // Simulate another app relaunch, this time against a failing backend.
|
| // Cached policy should still be available.
|
| + CreateNewBackend();
|
| MockConfigurationPolicyStore store;
|
| - CreateNewProvider();
|
| EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
|
| MockDeviceManagementBackendFailPolicy(
|
| DeviceManagementBackend::kErrorRequestFailed));
|
| - loop_.RunAllPending();
|
| + CreateNewProvider();
|
| SimulateSuccessfulLoginAndRunPending();
|
| EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
|
| provider_->Provide(&store);
|
| @@ -200,7 +183,7 @@
|
|
|
| TEST_F(DeviceManagementPolicyProviderTest, ErrorCausesNewRequest) {
|
| InSequence s;
|
| - CreateNewProvider(1000 * 1000, 0, 0, 0, 0);
|
| + SetRefreshDelays(provider_.get(), 1000 * 1000, 0, 0, 0);
|
| EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
|
| MockDeviceManagementBackendFailRegister(
|
| DeviceManagementBackend::kErrorRequestFailed));
|
| @@ -219,7 +202,7 @@
|
|
|
| TEST_F(DeviceManagementPolicyProviderTest, RefreshPolicies) {
|
| InSequence s;
|
| - CreateNewProvider(0, 0, 1000 * 1000, 1000, 0);
|
| + SetRefreshDelays(provider_.get(), 0, 0, 1000 * 1000, 1000);
|
| EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
|
| MockDeviceManagementBackendSucceedRegister());
|
| EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
|
| @@ -266,28 +249,4 @@
|
| SimulateSuccessfulLoginAndRunPending();
|
| }
|
|
|
| -// This test tests three things (see numbered comments below):
|
| -TEST_F(DeviceManagementPolicyProviderTest, UnmanagedDevice) {
|
| - InSequence s;
|
| - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
|
| - MockDeviceManagementBackendFailRegister(
|
| - DeviceManagementBackend::kErrorServiceManagementNotSupported));
|
| - SimulateSuccessfulLoginAndRunPending();
|
| - // (1) The provider's DMPolicyCache should know that the device is not
|
| - // managed.
|
| - EXPECT_TRUE(cache(provider_.get())->is_device_unmanaged());
|
| - // (2) On restart, the provider should detect that this is not the first
|
| - // login.
|
| - CreateNewProvider(1000*1000, 0, 0, 0, 0);
|
| - EXPECT_FALSE(provider_->waiting_for_initial_policies());
|
| - EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce(
|
| - MockDeviceManagementBackendSucceedRegister());
|
| - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).WillOnce(
|
| - MockDeviceManagementBackendSucceedBooleanPolicy(key::kDisableSpdy, true));
|
| - SimulateSuccessfulLoginAndRunPending();
|
| - // (3) Since the backend call this time returned a device id, the "unmanaged"
|
| - // marker should have been deleted.
|
| - EXPECT_FALSE(cache(provider_.get())->is_device_unmanaged());
|
| -}
|
| -
|
| } // namespace policy
|
|
|