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 f4a7e231d0f5f6e8aa99af4de8e6b3e9af339e55..28d11b0fc6b6d08961e854365884e414a851b350 100644 |
--- a/chrome/browser/policy/device_token_fetcher_unittest.cc |
+++ b/chrome/browser/policy/device_token_fetcher_unittest.cc |
@@ -224,4 +224,28 @@ TEST_F(DeviceTokenFetcherTest, FetchWithNonManagedUsername) { |
ASSERT_FALSE(fetcher_->IsTokenValid()); |
} |
+TEST_F(DeviceTokenFetcherTest, RestartImmediately) { |
+ // Create a token. |
+ EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
+ MockDeviceManagementBackendSucceedRegister()); |
+ SimulateSuccessfulLoginAndRunPending(kTestManagedDomainUsername); |
+ ASSERT_FALSE(fetcher_->IsTokenPending()); |
+ std::string device_token = fetcher_->GetDeviceToken(); |
+ |
+ // Restart a new fetcher immediately without calling StartFetching(). The |
+ // existing token should not be loaded, but rather a new token generated. |
+ FilePath token_path; |
+ GetDeviceTokenPath(fetcher_, &token_path); |
+ scoped_refptr<TestingDeviceTokenFetcher> fetcher2( |
+ new TestingDeviceTokenFetcher( |
+ backend_.get(), profile_.get(), token_path)); |
+ fetcher2->Restart(); |
+ EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).WillOnce( |
+ MockDeviceManagementBackendSucceedRegister()); |
+ fetcher2->SimulateLogin(kTestManagedDomainUsername); |
+ loop_.RunAllPending(); |
+ ASSERT_FALSE(fetcher2->IsTokenPending()); |
+ ASSERT_NE(device_token, fetcher2->GetDeviceToken()); |
+} |
+ |
} // namespace policy |