Chromium Code Reviews| Index: components/policy/core/common/cloud/cloud_policy_client_unittest.cc |
| diff --git a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc |
| index f209e1a6686f6d923e45db0345fb004421e7bffd..4cb4e44e68c30515e830a0bfbbda00d964391d78 100644 |
| --- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc |
| +++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc |
| @@ -603,6 +603,76 @@ TEST_F(CloudPolicyClientTest, UploadStatus) { |
| EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| } |
| +TEST_F(CloudPolicyClientTest, UploadStatusWhilePolicyFetchActive) { |
| + Register(); |
| + MockDeviceManagementJob* upload_status_job = nullptr; |
| + EXPECT_CALL(service_, |
| + CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS, |
| + request_context_)) |
| + .WillOnce(service_.CreateAsyncJob(&upload_status_job)); |
| + EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); |
| + EXPECT_CALL(upload_observer_, OnUploadComplete(true)).Times(1); |
| + CloudPolicyClient::StatusCallback callback = base::Bind( |
| + &MockUploadObserver::OnUploadComplete, |
| + base::Unretained(&upload_observer_)); |
|
bartfab (slow)
2015/02/06 14:41:01
Nit: #include "base/bind_helpers.h"
Andrew T Wilson (Slow)
2015/02/06 18:23:30
Done.
|
| + em::DeviceStatusReportRequest device_status; |
| + em::SessionStatusReportRequest session_status; |
| + client_->UploadDeviceStatus(&device_status, &session_status, callback); |
| + |
| + // Now initiate a policy fetch - this should not cancel the upload job. |
| + ExpectPolicyFetch(kDMToken, dm_protocol::kValueUserAffiliationNone); |
| + EXPECT_CALL(observer_, OnPolicyFetched(_)); |
| + client_->FetchPolicy(); |
| + CheckPolicyResponse(); |
| + |
| + upload_status_job->SendResponse(DM_STATUS_SUCCESS, upload_status_response_); |
| + EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| +} |
| + |
| +TEST_F(CloudPolicyClientTest, MultipleActiveRequests) { |
| + Register(); |
| + |
| + // Setup pending upload status job. |
|
bartfab (slow)
2015/02/06 14:41:01
Nit: s/Setup/Set up/ (the former is a noun, the la
Andrew T Wilson (Slow)
2015/02/06 18:23:30
Done.
|
| + MockDeviceManagementJob* upload_status_job = nullptr; |
| + EXPECT_CALL(service_, |
| + CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS, |
| + request_context_)) |
| + .WillOnce(service_.CreateAsyncJob(&upload_status_job)); |
| + EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); |
| + CloudPolicyClient::StatusCallback callback = base::Bind( |
| + &MockUploadObserver::OnUploadComplete, |
| + base::Unretained(&upload_observer_)); |
| + em::DeviceStatusReportRequest device_status; |
| + em::SessionStatusReportRequest session_status; |
| + client_->UploadDeviceStatus(&device_status, &session_status, callback); |
| + |
| + // Setup pending upload certificate job. |
|
bartfab (slow)
2015/02/06 14:41:01
Nit: s/Setup/Set up/
Andrew T Wilson (Slow)
2015/02/06 18:23:30
Done.
|
| + MockDeviceManagementJob* upload_certificate_job = nullptr; |
| + EXPECT_CALL(service_, |
| + CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_CERTIFICATE, |
| + request_context_)) |
| + .WillOnce(service_.CreateAsyncJob(&upload_certificate_job)); |
| + EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); |
| + |
| + // Expect two calls on our upload observer, one for the status upload and |
| + // one for the certificate upload. |
| + CloudPolicyClient::StatusCallback callback2 = base::Bind( |
| + &MockUploadObserver::OnUploadComplete, |
| + base::Unretained(&upload_observer_)); |
| + client_->UploadCertificate(kDeviceCertificate, callback2); |
| + EXPECT_EQ(2, client_->GetActiveRequestCountForTest()); |
| + |
| + // Now satisfy both active jobs. |
| + EXPECT_CALL(upload_observer_, OnUploadComplete(true)).Times(2); |
| + upload_status_job->SendResponse(DM_STATUS_SUCCESS, upload_status_response_); |
| + EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| + upload_certificate_job->SendResponse(DM_STATUS_SUCCESS, |
| + upload_certificate_response_); |
| + EXPECT_EQ(DM_STATUS_SUCCESS, client_->status()); |
| + |
| + EXPECT_EQ(0, client_->GetActiveRequestCountForTest()); |
| +} |
| + |
| TEST_F(CloudPolicyClientTest, UploadStatusFailure) { |
| Register(); |
| @@ -623,4 +693,27 @@ TEST_F(CloudPolicyClientTest, UploadStatusFailure) { |
| EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status()); |
| } |
| +TEST_F(CloudPolicyClientTest, RequestCancelOnUnregister) { |
| + Register(); |
| + |
| + // Setup pending upload status job. |
|
bartfab (slow)
2015/02/06 14:41:01
Nit: s/Setup/Set up/
Andrew T Wilson (Slow)
2015/02/06 18:23:30
Done.
|
| + MockDeviceManagementJob* upload_status_job = nullptr; |
| + EXPECT_CALL(service_, |
| + CreateJob(DeviceManagementRequestJob::TYPE_UPLOAD_STATUS, |
| + request_context_)) |
| + .WillOnce(service_.CreateAsyncJob(&upload_status_job)); |
| + EXPECT_CALL(service_, StartJob(_, _, _, _, _, _, _)); |
| + CloudPolicyClient::StatusCallback callback = base::Bind( |
| + &MockUploadObserver::OnUploadComplete, |
| + base::Unretained(&upload_observer_)); |
| + em::DeviceStatusReportRequest device_status; |
| + em::SessionStatusReportRequest session_status; |
| + client_->UploadDeviceStatus(&device_status, &session_status, callback); |
| + EXPECT_EQ(1, client_->GetActiveRequestCountForTest()); |
| + EXPECT_CALL(observer_, OnRegistrationStateChanged(_)); |
| + ExpectUnregistration(kDMToken); |
| + client_->Unregister(); |
| + EXPECT_EQ(0, client_->GetActiveRequestCountForTest()); |
| +} |
| + |
| } // namespace policy |