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

Unified Diff: chrome/browser/policy/device_management_service_unittest.cc

Issue 8952027: base::Callback-ify policy::DeviceManagementService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 12 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
Index: chrome/browser/policy/device_management_service_unittest.cc
diff --git a/chrome/browser/policy/device_management_service_unittest.cc b/chrome/browser/policy/device_management_service_unittest.cc
index 48c4be5e53d13075641f62a3d16628a808fd5975..352d7bce7de98dc366599ad1ed31d9a0ddca7020 100644
--- a/chrome/browser/policy/device_management_service_unittest.cc
+++ b/chrome/browser/policy/device_management_service_unittest.cc
@@ -5,12 +5,11 @@
#include <ostream>
#include <vector>
+#include "base/bind.h"
#include "base/message_loop.h"
#include "base/string_split.h"
-#include "chrome/browser/policy/device_management_backend_impl.h"
-#include "chrome/browser/policy/device_management_backend_mock.h"
+#include "chrome/browser/policy/cloud_policy_constants.h"
#include "chrome/browser/policy/device_management_service.h"
-#include "chrome/browser/policy/proto/device_management_constants.h"
#include "chrome/test/base/testing_browser_process.h"
#include "content/test/test_browser_thread.h"
#include "content/test/test_url_fetcher_factory.h"
@@ -24,7 +23,6 @@
#include "testing/gtest/include/gtest/gtest.h"
using content::BrowserThread;
-using testing::IgnoreResult;
using testing::InvokeWithoutArgs;
Joao da Silva 2012/01/02 16:14:43 Nit: not used
Mattias Nissler (ping if slow) 2012/01/02 17:53:23 Done.
using testing::_;
@@ -43,13 +41,12 @@ const char kResponseEmpty[] = "\x08\x00";
const char kGaiaAuthToken[] = "gaia-auth-token";
const char kOAuthToken[] = "oauth-token";
const char kDMToken[] = "device-management-token";
-const char kDeviceId[] = "device-id";
+const char kClientID[] = "device-id";
// Unit tests for the device management policy service. The tests are run
// against a TestURLFetcherFactory that is used to short-circuit the request
// without calling into the actual network stack.
-template<typename TESTBASE>
-class DeviceManagementServiceTestBase : public TESTBASE {
+class DeviceManagementServiceTestBase : public testing::Test {
protected:
DeviceManagementServiceTestBase()
: ui_thread_(BrowserThread::UI, &loop_),
@@ -59,16 +56,12 @@ class DeviceManagementServiceTestBase : public TESTBASE {
}
virtual void TearDown() {
- backend_.reset();
service_.reset();
loop_.RunAllPending();
- TESTBASE::TearDown();
}
void ResetService() {
- backend_.reset();
service_.reset(new DeviceManagementService(kServiceUrl));
- backend_.reset(service_->CreateBackend());
}
void InitializeService() {
@@ -76,9 +69,72 @@ class DeviceManagementServiceTestBase : public TESTBASE {
loop_.RunAllPending();
}
+ DeviceManagementRequestJob* StartRegistrationJob() {
+ DeviceManagementRequestJob* job =
+ service_->CreateJob(DeviceManagementRequestJob::TYPE_REGISTRATION);
+ job->SetGaiaToken(kGaiaAuthToken);
+ job->SetOAuthToken(kOAuthToken);
+ job->SetClientID(kClientID);
+ job->GetRequest()->mutable_register_request();
+ job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
+ base::Unretained(this)));
+ return job;
+ }
+
+ DeviceManagementRequestJob* StartUnregistrationJob() {
+ DeviceManagementRequestJob* job =
+ service_->CreateJob(DeviceManagementRequestJob::TYPE_UNREGISTRATION);
+ job->SetDMToken(kDMToken);
+ job->SetClientID(kClientID);
+ job->GetRequest()->mutable_unregister_request();
+ job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
+ base::Unretained(this)));
+ return job;
+ }
+
+ DeviceManagementRequestJob* StartPolicyFetchJob() {
+ DeviceManagementRequestJob* job =
+ service_->CreateJob(DeviceManagementRequestJob::TYPE_POLICY_FETCH);
+ job->SetGaiaToken(kGaiaAuthToken);
+ job->SetOAuthToken(kOAuthToken);
+ job->SetClientID(kClientID);
+ em::PolicyFetchRequest* fetch_request =
+ job->GetRequest()->mutable_policy_request()->add_request();
+ fetch_request->set_policy_type(dm_protocol::kChromeUserPolicyType);
+ job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
+ base::Unretained(this)));
+ return job;
+ }
+
+ DeviceManagementRequestJob* StartAutoEnrollmentJob() {
+ DeviceManagementRequestJob* job =
+ service_->CreateJob(DeviceManagementRequestJob::TYPE_AUTO_ENROLLMENT);
+ job->SetClientID(kClientID);
+ em::DeviceAutoEnrollmentRequest* request =
+ job->GetRequest()->mutable_auto_enrollment_request();
+ request->set_modulus(1);
+ request->set_remainder(0);
+ job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
+ base::Unretained(this)));
+ return job;
+ }
+
+ void SendResponse(TestURLFetcher* fetcher,
+ const net::URLRequestStatus request_status,
+ int http_status,
+ const std::string& response) {
+ fetcher->set_url(GURL(kServiceUrl));
+ fetcher->set_status(request_status);
+ fetcher->set_response_code(http_status);
+ fetcher->SetResponseString(response);
+ fetcher->delegate()->OnURLFetchComplete(fetcher);
+ }
+
+ MOCK_METHOD2(OnJobDone, void(DeviceManagementStatus,
+ const em::DeviceManagementResponse&));
+
TestURLFetcherFactory factory_;
scoped_ptr<DeviceManagementService> service_;
- scoped_ptr<DeviceManagementBackend> backend_;
private:
MessageLoopForUI loop_;
@@ -87,23 +143,23 @@ class DeviceManagementServiceTestBase : public TESTBASE {
};
struct FailedRequestParams {
- FailedRequestParams(DeviceManagementBackend::ErrorCode expected_error,
+ FailedRequestParams(DeviceManagementStatus expected_status,
net::URLRequestStatus::Status request_status,
int http_status,
const std::string& response)
- : expected_error_(expected_error),
+ : expected_status_(expected_status),
request_status_(request_status, 0),
http_status_(http_status),
response_(response) {}
- DeviceManagementBackend::ErrorCode expected_error_;
+ DeviceManagementStatus expected_status_;
net::URLRequestStatus request_status_;
int http_status_;
std::string response_;
};
void PrintTo(const FailedRequestParams& params, std::ostream* os) {
- *os << "FailedRequestParams " << params.expected_error_
+ *os << "FailedRequestParams " << params.expected_status_
<< " " << params.request_status_.status()
<< " " << params.http_status_;
}
@@ -111,77 +167,48 @@ void PrintTo(const FailedRequestParams& params, std::ostream* os) {
// A parameterized test case for erroneous response situations, they're mostly
// the same for all kinds of requests.
class DeviceManagementServiceFailedRequestTest
- : public DeviceManagementServiceTestBase<
- testing::TestWithParam<FailedRequestParams> > {
+ : public DeviceManagementServiceTestBase,
+ public testing::WithParamInterface<FailedRequestParams> {
};
TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) {
- DeviceRegisterResponseDelegateMock mock;
- EXPECT_CALL(mock, OnError(GetParam().expected_error_));
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(GetParam().request_status_);
- fetcher->set_response_code(GetParam().http_status_);
- fetcher->SetResponseString(GetParam().response_);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
+ GetParam().response_);
}
TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) {
- DeviceUnregisterResponseDelegateMock mock;
- EXPECT_CALL(mock, OnError(GetParam().expected_error_));
- em::DeviceUnregisterRequest request;
- backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
+ EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(GetParam().request_status_);
- fetcher->set_response_code(GetParam().http_status_);
- fetcher->SetResponseString(GetParam().response_);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
+ GetParam().response_);
}
TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) {
- DevicePolicyResponseDelegateMock mock;
- EXPECT_CALL(mock, OnError(GetParam().expected_error_));
- em::DevicePolicyRequest request;
- request.set_policy_scope(kChromePolicyScope);
- em::DevicePolicySettingRequest* setting_request =
- request.add_setting_request();
- setting_request->set_key(kChromeDevicePolicySettingKey);
- backend_->ProcessPolicyRequest(kDMToken, kDeviceId,
- CloudPolicyDataStore::USER_AFFILIATION_NONE,
- request, NULL, &mock);
+ EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(GetParam().request_status_);
- fetcher->set_response_code(GetParam().http_status_);
- fetcher->SetResponseString(GetParam().response_);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
+ GetParam().response_);
}
TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) {
- DeviceAutoEnrollmentResponseDelegateMock mock;
- EXPECT_CALL(mock, OnError(GetParam().expected_error_));
- em::DeviceAutoEnrollmentRequest request;
- request.set_modulus(1);
- request.set_remainder(0);
- backend_->ProcessAutoEnrollmentRequest(kDeviceId, request, &mock);
+ EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _));
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartAutoEnrollmentJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(GetParam().request_status_);
- fetcher->set_response_code(GetParam().http_status_);
- fetcher->SetResponseString(GetParam().response_);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_,
+ GetParam().response_);
}
INSTANTIATE_TEST_CASE_P(
@@ -189,69 +216,69 @@ INSTANTIATE_TEST_CASE_P(
DeviceManagementServiceFailedRequestTest,
testing::Values(
FailedRequestParams(
- DeviceManagementBackend::kErrorRequestFailed,
+ DM_STATUS_REQUEST_FAILED,
net::URLRequestStatus::FAILED,
200,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorHttpStatus,
+ DM_STATUS_HTTP_STATUS_ERROR,
net::URLRequestStatus::SUCCESS,
666,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorResponseDecoding,
+ DM_STATUS_RESPONSE_DECODING_ERROR,
net::URLRequestStatus::SUCCESS,
200,
PROTO_STRING("Not a protobuf.")),
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceManagementNotSupported,
+ DM_STATUS_SERVICE_MANAGEMENT_NOT_SUPPORTED,
net::URLRequestStatus::SUCCESS,
403,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceInvalidSerialNumber,
+ DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER,
net::URLRequestStatus::SUCCESS,
405,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceDeviceIdConflict,
+ DM_STATUS_SERVICE_DEVICE_ID_CONFLICT,
net::URLRequestStatus::SUCCESS,
409,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceDeviceNotFound,
+ DM_STATUS_SERVICE_DEVICE_NOT_FOUND,
net::URLRequestStatus::SUCCESS,
410,
PROTO_STRING(kResponseEmpty)),
// TODO(pastarmovj): Remove once DM server is deployed.
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceDeviceNotFound,
+ DM_STATUS_SERVICE_DEVICE_NOT_FOUND,
net::URLRequestStatus::SUCCESS,
901,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceManagementTokenInvalid,
+ DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID,
net::URLRequestStatus::SUCCESS,
401,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorRequestInvalid,
+ DM_STATUS_REQUEST_INVALID,
net::URLRequestStatus::SUCCESS,
400,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorTemporaryUnavailable,
+ DM_STATUS_TEMPORARY_UNAVAILABLE,
net::URLRequestStatus::SUCCESS,
404,
PROTO_STRING(kResponseEmpty)),
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceActivationPending,
+ DM_STATUS_SERVICE_ACTIVATION_PENDING,
net::URLRequestStatus::SUCCESS,
412,
PROTO_STRING(kResponseEmpty)),
// TODO(pastarmovj): Remove once DM server is deployed.
FailedRequestParams(
- DeviceManagementBackend::kErrorServiceActivationPending,
+ DM_STATUS_SERVICE_ACTIVATION_PENDING,
net::URLRequestStatus::SUCCESS,
491,
PROTO_STRING(kResponseEmpty))));
@@ -297,12 +324,7 @@ class QueryParams {
};
class DeviceManagementServiceTest
- : public DeviceManagementServiceTestBase<testing::Test> {
- public:
- void ResetBackend() {
- backend_.reset();
- }
-
+ : public DeviceManagementServiceTestBase {
protected:
void CheckURLAndQueryParams(const GURL& request_url,
const std::string& request_type,
@@ -314,19 +336,12 @@ class DeviceManagementServiceTest
EXPECT_EQ(service_url.path(), request_url.path());
QueryParams query_params(request_url.query());
- EXPECT_TRUE(query_params.Check(
- DeviceManagementBackendImpl::kParamRequest, request_type));
- EXPECT_TRUE(query_params.Check(
- DeviceManagementBackendImpl::kParamDeviceID, device_id));
- EXPECT_TRUE(query_params.Check(
- DeviceManagementBackendImpl::kParamDeviceType,
- DeviceManagementBackendImpl::kValueDeviceType));
- EXPECT_TRUE(query_params.Check(
- DeviceManagementBackendImpl::kParamAppType,
- DeviceManagementBackendImpl::kValueAppType));
- EXPECT_TRUE(query_params.Check(
- DeviceManagementBackendImpl::kParamAgent,
- DeviceManagementBackendImpl::GetAgentString()));
+ EXPECT_TRUE(query_params.Check(dm_protocol::kParamRequest, request_type));
+ EXPECT_TRUE(query_params.Check(dm_protocol::kParamDeviceID, device_id));
+ EXPECT_TRUE(query_params.Check(dm_protocol::kParamDeviceType,
+ dm_protocol::kValueDeviceType));
+ EXPECT_TRUE(query_params.Check(dm_protocol::kParamAppType,
+ dm_protocol::kValueAppType));
}
};
@@ -339,46 +354,36 @@ MATCHER_P(MessageEquals, reference, "") {
}
TEST_F(DeviceManagementServiceTest, RegisterRequest) {
- DeviceRegisterResponseDelegateMock mock;
- em::DeviceRegisterResponse expected_response;
- expected_response.set_device_management_token(kDMToken);
- EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ em::DeviceManagementResponse expected_response;
+ expected_response.mutable_register_response()->
+ set_device_management_token(kDMToken);
+ EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS,
+ MessageEquals(expected_response)));
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
CheckURLAndQueryParams(fetcher->GetOriginalURL(),
- DeviceManagementBackendImpl::kValueRequestRegister,
- kDeviceId);
+ dm_protocol::kValueRequestRegister,
+ kClientID);
- em::DeviceManagementRequest expected_request_wrapper;
- expected_request_wrapper.mutable_register_request()->CopyFrom(request);
- std::string expected_request_data;
- ASSERT_TRUE(expected_request_wrapper.SerializeToString(
- &expected_request_data));
- EXPECT_EQ(expected_request_data, fetcher->upload_data());
+ std::string expected_data;
+ ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
+ EXPECT_EQ(expected_data, fetcher->upload_data());
// Generate the response.
std::string response_data;
- em::DeviceManagementResponse response_wrapper;
- response_wrapper.mutable_register_response()->CopyFrom(expected_response);
- ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
+ ASSERT_TRUE(expected_response.SerializeToString(&response_data));
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(status);
- fetcher->set_response_code(200);
- fetcher->SetResponseString(response_data);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, status, 200, response_data);
}
TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
- DeviceUnregisterResponseDelegateMock mock;
- em::DeviceUnregisterResponse expected_response;
- EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response)));
- em::DeviceUnregisterRequest request;
- backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
+ em::DeviceManagementResponse expected_response;
+ expected_response.mutable_unregister_response();
+ EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS,
+ MessageEquals(expected_response)));
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -391,85 +396,62 @@ TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
EXPECT_EQ(service_url.path(), request_url.path());
CheckURLAndQueryParams(fetcher->GetOriginalURL(),
- DeviceManagementBackendImpl::kValueRequestUnregister,
- kDeviceId);
+ dm_protocol::kValueRequestUnregister,
+ kClientID);
- em::DeviceManagementRequest expected_request_wrapper;
- expected_request_wrapper.mutable_unregister_request()->CopyFrom(request);
- std::string expected_request_data;
- ASSERT_TRUE(expected_request_wrapper.SerializeToString(
- &expected_request_data));
- EXPECT_EQ(expected_request_data, fetcher->upload_data());
+ std::string expected_data;
+ ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
+ EXPECT_EQ(expected_data, fetcher->upload_data());
// Generate the response.
std::string response_data;
- em::DeviceManagementResponse response_wrapper;
- response_wrapper.mutable_unregister_response()->CopyFrom(expected_response);
- ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
+ ASSERT_TRUE(expected_response.SerializeToString(&response_data));
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(status);
- fetcher->set_response_code(200);
- fetcher->SetResponseString(response_data);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, status, 200, response_data);
}
TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) {
- DeviceRegisterResponseDelegateMock mock;
- EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
// There shouldn't be any callbacks.
- backend_.reset();
+ request_job.reset();
}
TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) {
- DeviceUnregisterResponseDelegateMock mock;
- EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0);
- em::DeviceUnregisterRequest request;
- backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
+ EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
// There shouldn't be any callbacks.
- backend_.reset();
+ request_job.reset();
}
TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) {
- DevicePolicyResponseDelegateMock mock;
- EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0);
- em::DevicePolicyRequest request;
- request.set_policy_scope(kChromePolicyScope);
- em::DevicePolicySettingRequest* setting_request =
- request.add_setting_request();
- setting_request->set_key(kChromeDevicePolicySettingKey);
- setting_request->set_watermark("stale");
- backend_->ProcessPolicyRequest(kDMToken, kDeviceId,
- CloudPolicyDataStore::USER_AFFILIATION_NONE,
- request, NULL, &mock);
+ EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
// There shouldn't be any callbacks.
- backend_.reset();
+ request_job.reset();
}
TEST_F(DeviceManagementServiceTest, JobQueueing) {
// Start with a non-initialized service.
ResetService();
+ em::DeviceManagementResponse expected_response;
+ expected_response.mutable_register_response()->
+ set_device_management_token(kDMToken);
+ EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS,
+ MessageEquals(expected_response)));
+
// Make a request. We should not see any fetchers being created.
- DeviceRegisterResponseDelegateMock mock;
- em::DeviceRegisterResponse expected_response;
- expected_response.set_device_management_token(kDMToken);
- EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_FALSE(fetcher);
@@ -481,70 +463,48 @@ TEST_F(DeviceManagementServiceTest, JobQueueing) {
// Check that the request is processed as expected.
std::string response_data;
- em::DeviceManagementResponse response_wrapper;
- response_wrapper.mutable_register_response()->CopyFrom(expected_response);
- ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
+ ASSERT_TRUE(expected_response.SerializeToString(&response_data));
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(status);
- fetcher->set_response_code(200);
- fetcher->SetResponseString(response_data);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, status, 200, response_data);
}
TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) {
- DevicePolicyResponseDelegateMock mock;
- EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0);
- em::DevicePolicyRequest request;
- request.set_policy_scope(kChromePolicyScope);
- em::DevicePolicySettingRequest* setting_request =
- request.add_setting_request();
- setting_request->set_key(kChromeDevicePolicySettingKey);
- setting_request->set_watermark("stale");
- backend_->ProcessPolicyRequest(kDMToken, kDeviceId,
- CloudPolicyDataStore::USER_AFFILIATION_NONE,
- request, NULL, &mock);
+ EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
// Shutdown the service and cancel the job afterwards.
service_->Shutdown();
- backend_.reset();
+ request_job.reset();
+}
+
+ACTION_P(ResetPointer, pointer) {
+ pointer->reset();
}
TEST_F(DeviceManagementServiceTest, CancelDuringCallback) {
// Make a request.
- DeviceRegisterResponseDelegateMock mock;
- EXPECT_CALL(mock, OnError(_))
- .WillOnce(InvokeWithoutArgs(this,
- &DeviceManagementServiceTest::ResetBackend))
- .RetiresOnSaturation();
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
+ EXPECT_CALL(*this, OnJobDone(_, _))
+ .WillOnce(ResetPointer(&request_job));
+
// Generate a callback.
net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(status);
- fetcher->set_response_code(500);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, status, 500, "");
- // Backend should have been reset.
- EXPECT_FALSE(backend_.get());
+ // Job should have been reset.
+ EXPECT_FALSE(request_job.get());
}
TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
// Make a request.
- DeviceRegisterResponseDelegateMock mock;
- EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
- EXPECT_CALL(mock, OnError(_)).Times(0);
+ EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0);
@@ -554,10 +514,7 @@ TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
// Generate a callback with a proxy failure.
net::URLRequestStatus status(net::URLRequestStatus::FAILED,
net::ERR_PROXY_CONNECTION_FAILED);
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(status);
- fetcher->set_response_code(200);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, status, 200, "");
// Verify that a new URLFetcher was started that bypasses the proxy.
fetcher = factory_.GetFetcherByID(0);
@@ -569,13 +526,9 @@ TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) {
// Make a request.
- DeviceRegisterResponseDelegateMock mock;
- EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
- EXPECT_CALL(mock, OnError(_)).Times(0);
+ EXPECT_CALL(*this, OnJobDone(_, _)).Times(0);
- em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken,
- kDeviceId, request, &mock);
+ scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0);
@@ -590,10 +543,7 @@ TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) {
// Generate a callback with a valid http response, that was generated by
// a bad/wrong proxy.
net::URLRequestStatus status;
- fetcher->set_url(GURL(kServiceUrl));
- fetcher->set_status(status);
- fetcher->set_response_code(200);
- fetcher->delegate()->OnURLFetchComplete(fetcher);
+ SendResponse(fetcher, status, 200, "");
// Verify that a new URLFetcher was started that bypasses the proxy.
fetcher = factory_.GetFetcherByID(0);

Powered by Google App Engine
This is Rietveld 408576698