| Index: chrome/browser/policy/device_management_policy_provider_unittest.cc
|
| diff --git a/chrome/browser/policy/device_management_policy_provider_unittest.cc b/chrome/browser/policy/device_management_policy_provider_unittest.cc
|
| index 57172869e4fe0dc8f7bffea3fe5b0bf05b1f9c05..705b2288c5538e71b16413d8715bc5d76d3dcb45 100644
|
| --- a/chrome/browser/policy/device_management_policy_provider_unittest.cc
|
| +++ b/chrome/browser/policy/device_management_policy_provider_unittest.cc
|
| @@ -76,10 +76,21 @@ class DeviceManagementPolicyProviderTest : public testing::Test {
|
| loop_.RunAllPending();
|
| }
|
|
|
| - protected:
|
| MockDeviceManagementBackend* backend_; // weak
|
| scoped_ptr<DeviceManagementPolicyProvider> provider_;
|
|
|
| + protected:
|
| + 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);
|
| + }
|
| +
|
| private:
|
| MessageLoop loop_;
|
| BrowserThread ui_thread_;
|
| @@ -127,13 +138,23 @@ TEST_F(DeviceManagementPolicyProviderTest, SecondProvide) {
|
| SimulateSuccessfulInitialPolicyFetch();
|
|
|
| // Simulate a app relaunch by constructing a new provider. Policy should be
|
| - // immediately provided and no refresh should be triggered.
|
| + // refreshed (since that might be the purpose of the app relaunch).
|
| CreateNewBackend();
|
| - EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(0);
|
| + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1);
|
| CreateNewProvider();
|
| + Mock::VerifyAndClearExpectations(backend_);
|
| +
|
| + // Simulate another app relaunch, this time against a failing backend.
|
| + // Cached policy should still be available.
|
| + CreateNewBackend();
|
| + backend_->AllShouldFail();
|
| MockConfigurationPolicyStore store;
|
| + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1);
|
| + CreateNewProvider();
|
| + SimulateSuccessfulLoginAndRunPending();
|
| EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
|
| provider_->Provide(&store);
|
| + ASSERT_EQ(1U, store.policy_map().size());
|
| }
|
|
|
| // When policy is successfully fetched from the device management server, it
|
| @@ -144,9 +165,24 @@ TEST_F(DeviceManagementPolicyProviderTest, FetchTriggersRefresh) {
|
| registrar.Add(&observer,
|
| NotificationType::POLICY_CHANGED,
|
| NotificationService::AllSources());
|
| - EXPECT_CALL(observer,
|
| - Observe(_, _, _)).Times(1);
|
| + EXPECT_CALL(observer, Observe(_, _, _)).Times(1);
|
| SimulateSuccessfulInitialPolicyFetch();
|
| }
|
|
|
| +TEST_F(DeviceManagementPolicyProviderTest, ErrorCausesNewRequest) {
|
| + backend_->RegisterFailsOncePolicyFailsTwice();
|
| + SetRefreshDelays(provider_.get(), 1000 * 1000, 0, 0, 0);
|
| + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(2);
|
| + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(3);
|
| + SimulateSuccessfulLoginAndRunPending();
|
| +}
|
| +
|
| +TEST_F(DeviceManagementPolicyProviderTest, RefreshPolicies) {
|
| + backend_->AllWorksFirstPolicyFailsLater();
|
| + SetRefreshDelays(provider_.get(), 0, 0, 1000 * 1000, 1000);
|
| + EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1);
|
| + EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(4);
|
| + SimulateSuccessfulLoginAndRunPending();
|
| }
|
| +
|
| +} // namespace policy
|
|
|