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 |