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(), |
+ ¬ifier_); |
+ 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(), |
+ ¬ifier_); |
+ 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(), |
+ ¬ifier_); |
+ 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(), |
+ ¬ifier_); |
+ FetchToken(&fetcher); |
+ loop_.RunAllPending(); |
+ // This is the opposite case of DontSetFetchingDone1. |
+ EXPECT_TRUE(cache_->IsReady()); |
+} |
+ |
} // namespace policy |