Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Unified Diff: components/policy/core/common/cloud/cloud_policy_client_unittest.cc

Issue 885653007: Modify CloudPolicyClient to support multiple concurrent requests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More review feedback Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/policy/core/common/cloud/cloud_policy_client.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « components/policy/core/common/cloud/cloud_policy_client.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698