Index: chrome/browser/policy/cloud_policy_client_unittest.cc |
diff --git a/chrome/browser/policy/cloud_policy_client_unittest.cc b/chrome/browser/policy/cloud_policy_client_unittest.cc |
index 241636edb690d5cfbfbd8d95e2cb44f7daf3a8fb..d4e1d6b6796ce81ea8285a6ebb79c068ea57cc82 100644 |
--- a/chrome/browser/policy/cloud_policy_client_unittest.cc |
+++ b/chrome/browser/policy/cloud_policy_client_unittest.cc |
@@ -14,6 +14,7 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+using testing::Mock; |
using testing::Return; |
using testing::SaveArg; |
using testing::StrictMock; |
@@ -253,6 +254,38 @@ TEST_F(CloudPolicyClientTest, RegistrationFailure) { |
EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status()); |
} |
+TEST_F(CloudPolicyClientTest, RetryRegistration) { |
+ // First registration does not set the re-register flag. |
+ EXPECT_FALSE( |
+ registration_request_.mutable_register_request()->has_reregister()); |
+ MockDeviceManagementJob* register_job = NULL; |
+ EXPECT_CALL(service_, |
+ CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION)) |
+ .WillOnce(service_.CreateAsyncJob(®ister_job)); |
+ EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, |
+ "", kOAuthToken, "", "", _, |
+ MatchProto(registration_request_))); |
+ client_->Register(em::DeviceRegisterRequest::USER, |
+ kOAuthToken, std::string(), false); |
+ EXPECT_FALSE(client_->is_registered()); |
+ Mock::VerifyAndClearExpectations(&service_); |
+ |
+ // Simulate a retry callback before proceeding; the re-register flag is set. |
+ registration_request_.mutable_register_request()->set_reregister(true); |
+ EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, |
+ "", kOAuthToken, "", "", _, |
+ MatchProto(registration_request_))); |
+ register_job->RetryJob(); |
+ Mock::VerifyAndClearExpectations(&service_); |
+ |
+ // Subsequent retries keep the flag set. |
+ EXPECT_CALL(service_, StartJob(dm_protocol::kValueRequestRegister, |
+ "", kOAuthToken, "", "", _, |
+ MatchProto(registration_request_))); |
+ register_job->RetryJob(); |
+ Mock::VerifyAndClearExpectations(&service_); |
+} |
+ |
TEST_F(CloudPolicyClientTest, PolicyUpdate) { |
Register(); |