| 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..dc9faf0b5d09063131891c5c606e383495d5e8ed 100644
|
| --- a/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
|
| +++ b/components/policy/core/common/cloud/cloud_policy_client_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| #include <set>
|
|
|
| #include "base/bind.h"
|
| +#include "base/bind_helpers.h"
|
| #include "base/compiler_specific.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| @@ -479,7 +480,7 @@ TEST_F(CloudPolicyClientTest, UnregisterFailure) {
|
| TEST_F(CloudPolicyClientTest, PolicyFetchWithExtensionPolicy) {
|
| Register();
|
|
|
| - // Setup the |expected_responses| and |policy_response_|.
|
| + // Set up the |expected_responses| and |policy_response_|.
|
| static const char* kExtensions[] = {
|
| "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
| "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
| @@ -603,6 +604,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_));
|
| + 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();
|
| +
|
| + // Set up pending upload status job.
|
| + 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);
|
| +
|
| + // Set up pending upload certificate job.
|
| + 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 +694,27 @@ TEST_F(CloudPolicyClientTest, UploadStatusFailure) {
|
| EXPECT_EQ(DM_STATUS_REQUEST_FAILED, client_->status());
|
| }
|
|
|
| +TEST_F(CloudPolicyClientTest, RequestCancelOnUnregister) {
|
| + Register();
|
| +
|
| + // Set up pending upload status job.
|
| + 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
|
|
|