Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(235)

Unified Diff: chrome/browser/policy/device_management_policy_provider_unittest.cc

Issue 5219006: Refresh policies from DM server periodically (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « chrome/browser/policy/device_management_policy_provider.cc ('k') | chrome/browser/policy/device_token_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698