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

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

Issue 8499021: UserPolicyCache only becomes ready after policy has been fetched. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 9 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_token_fetcher_unittest.cc
diff --git a/chrome/browser/policy/device_token_fetcher_unittest.cc b/chrome/browser/policy/device_token_fetcher_unittest.cc
index f3f5fbea59ca39b05275f25a778deb21c4501f6f..e2caa8c439f995a8ab163e1666601f9026f0e291 100644
--- a/chrome/browser/policy/device_token_fetcher_unittest.cc
+++ b/chrome/browser/policy/device_token_fetcher_unittest.cc
@@ -36,7 +36,8 @@ class DeviceTokenFetcherTest : public testing::Test {
virtual void SetUp() {
cache_.reset(new UserPolicyCache(
- temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest")));
+ temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest"),
+ false /* wait_for_policy_fetch */));
EXPECT_CALL(service_, CreateBackend())
.Times(AnyNumber())
.WillRepeatedly(MockDeviceManagementServiceProxyBackend(&backend_));
@@ -55,6 +56,18 @@ class DeviceTokenFetcherTest : public testing::Test {
fetcher->FetchToken();
}
+ void CreateNewWaitingCache() {
+ cache_.reset(new UserPolicyCache(
+ temp_user_data_dir_.path().AppendASCII("DeviceTokenFetcherTest"),
+ true /* wait_for_policy_fetch */));
+ // Make this cache's disk cache ready, but have it still waiting for a
+ // policy fetch.
+ cache_->Load();
+ loop_.RunAllPending();
+ ASSERT_TRUE(cache_->last_policy_refresh_time().is_null());
+ ASSERT_FALSE(cache_->IsReady());
+ }
+
MessageLoop loop_;
MockDeviceManagementBackend backend_;
MockDeviceManagementService service_;
@@ -125,4 +138,47 @@ TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) {
EXPECT_TRUE(cache_->is_unmanaged());
}
+TEST_F(DeviceTokenFetcherTest, DontSetFetchingDone) {
+ CreateNewWaitingCache();
+ DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
+ &notifier_);
+ EXPECT_FALSE(cache_->IsReady());
+}
+
+TEST_F(DeviceTokenFetcherTest, DontSetFetchingDoneWithoutPolicyFetch) {
+ CreateNewWaitingCache();
+ EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _, _)).WillOnce(
+ MockDeviceManagementBackendSucceedRegister());
+ EXPECT_CALL(observer_, OnDeviceTokenChanged());
+ DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
+ &notifier_);
+ FetchToken(&fetcher);
+ loop_.RunAllPending();
+ // On successful token fetching the cache isn't set to ready, since the next
+ // step is to fetch policy. Only failures to fetch the token should make
+ // the cache ready.
+ EXPECT_FALSE(cache_->IsReady());
+}
+
+TEST_F(DeviceTokenFetcherTest, SetFetchingDoneWhenUnmanaged) {
+ CreateNewWaitingCache();
+ cache_->SetUnmanaged();
+ DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
+ &notifier_);
+ EXPECT_TRUE(cache_->IsReady());
+}
+
+TEST_F(DeviceTokenFetcherTest, SetFetchingDoneOnFailures) {
+ CreateNewWaitingCache();
+ EXPECT_CALL(backend_, ProcessRegisterRequest(_, _, _, _, _)).WillOnce(
+ MockDeviceManagementBackendFailRegister(
+ DeviceManagementBackend::kErrorRequestFailed));
+ DeviceTokenFetcher fetcher(&service_, cache_.get(), data_store_.get(),
+ &notifier_);
+ FetchToken(&fetcher);
+ loop_.RunAllPending();
+ // This is the opposite case of DontSetFetchingDone1.
+ EXPECT_TRUE(cache_->IsReady());
+}
+
} // namespace policy

Powered by Google App Engine
This is Rietveld 408576698