summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/policy/device_management_backend.h2
-rw-r--r--chrome/browser/policy/device_management_backend_impl.cc89
-rw-r--r--chrome/browser/policy/device_management_backend_impl.h18
-rw-r--r--chrome/browser/policy/device_management_policy_provider.cc1
-rw-r--r--chrome/browser/policy/device_management_policy_provider_unittest.cc6
-rw-r--r--chrome/browser/policy/device_management_service_browsertest.cc12
-rw-r--r--chrome/browser/policy/device_management_service_unittest.cc110
-rw-r--r--chrome/browser/policy/mock_device_management_backend.cc6
-rw-r--r--chrome/browser/policy/mock_device_management_backend.h8
-rw-r--r--net/tools/testserver/device_management.py4
10 files changed, 163 insertions, 93 deletions
diff --git a/chrome/browser/policy/device_management_backend.h b/chrome/browser/policy/device_management_backend.h
index 25c7b1b..95ad095 100644
--- a/chrome/browser/policy/device_management_backend.h
+++ b/chrome/browser/policy/device_management_backend.h
@@ -94,11 +94,13 @@ class DeviceManagementBackend : NonThreadSafe {
virtual void ProcessUnregisterRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DeviceUnregisterRequest& request,
DeviceUnregisterResponseDelegate* delegate) = 0;
virtual void ProcessPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate) = 0;
diff --git a/chrome/browser/policy/device_management_backend_impl.cc b/chrome/browser/policy/device_management_backend_impl.cc
index 2808c19..11e5fea 100644
--- a/chrome/browser/policy/device_management_backend_impl.cc
+++ b/chrome/browser/policy/device_management_backend_impl.cc
@@ -15,21 +15,26 @@
namespace policy {
-namespace {
-
// Name constants for URL query parameters.
-const char kServiceParamRequest[] = "request";
-const char kServiceParamDeviceType[] = "devicetype";
-const char kServiceParamAppType[] = "apptype";
-const char kServiceParamDeviceID[] = "deviceid";
-const char kServiceParamAgent[] = "agent";
+const char DeviceManagementBackendImpl::kParamRequest[] = "request";
+const char DeviceManagementBackendImpl::kParamDeviceType[] = "devicetype";
+const char DeviceManagementBackendImpl::kParamAppType[] = "apptype";
+const char DeviceManagementBackendImpl::kParamDeviceID[] = "deviceid";
+const char DeviceManagementBackendImpl::kParamAgent[] = "agent";
// String constants for the device and app type we report to the server.
-const char kServiceValueDeviceType[] = "Chrome OS";
-const char kServiceValueAppType[] = "Chrome";
+const char DeviceManagementBackendImpl::kValueRequestRegister[] = "register";
+const char DeviceManagementBackendImpl::kValueRequestUnregister[] =
+ "unregister";
+const char DeviceManagementBackendImpl::kValueRequestPolicy[] = "policy";
+const char DeviceManagementBackendImpl::kValueDeviceType[] = "Chrome OS";
+const char DeviceManagementBackendImpl::kValueAppType[] = "Chrome";
+
+namespace {
-const char kServiceValueAgent[] =
- "%s enterprise management client version %s (%s)";
+const char kValueAgent[] = "%s enterprise management client version %s (%s)";
+
+const char kPostContentType[] = "application/octet-stream";
const char kServiceTokenAuthHeader[] = "Authorization: GoogleLogin auth=";
const char kDMTokenAuthHeader[] = "Authorization: GoogleDMToken token=";
@@ -95,17 +100,17 @@ class DeviceManagementJobBase
protected:
// Constructs a device management job running for the given backend.
DeviceManagementJobBase(DeviceManagementBackendImpl* backend_impl,
- const std::string& request_type)
+ const std::string& request_type,
+ const std::string& device_id)
: backend_impl_(backend_impl) {
- query_params_.Put(kServiceParamRequest, request_type);
- query_params_.Put(kServiceParamDeviceType, kServiceValueDeviceType);
- query_params_.Put(kServiceParamAppType, kServiceValueAppType);
- chrome::VersionInfo version_info;
- std::string agent = base::StringPrintf(kServiceValueAgent,
- version_info.Name().c_str(),
- version_info.Version().c_str(),
- version_info.LastChange().c_str());
- query_params_.Put(kServiceParamAgent, agent);
+ query_params_.Put(DeviceManagementBackendImpl::kParamRequest, request_type);
+ query_params_.Put(DeviceManagementBackendImpl::kParamDeviceType,
+ DeviceManagementBackendImpl::kValueDeviceType);
+ query_params_.Put(DeviceManagementBackendImpl::kParamAppType,
+ DeviceManagementBackendImpl::kValueAppType);
+ query_params_.Put(DeviceManagementBackendImpl::kParamDeviceID, device_id);
+ query_params_.Put(DeviceManagementBackendImpl::kParamAgent,
+ DeviceManagementBackendImpl::GetAgentString());
}
void SetQueryParam(const std::string& name, const std::string& value) {
@@ -120,10 +125,6 @@ class DeviceManagementJobBase
device_management_token_ = device_management_token;
}
- void SetDeviceID(const std::string& device_id) {
- query_params_.Put(kServiceParamDeviceID, device_id);
- }
-
void SetPayload(const em::DeviceManagementRequest& request) {
if (!request.SerializeToString(&payload_)) {
NOTREACHED();
@@ -210,7 +211,7 @@ GURL DeviceManagementJobBase::GetURL(
}
void DeviceManagementJobBase::ConfigureRequest(URLFetcher* fetcher) {
- fetcher->set_upload_data("application/octet-stream", payload_);
+ fetcher->set_upload_data(kPostContentType, payload_);
std::string extra_headers;
if (!auth_token_.empty())
extra_headers += kServiceTokenAuthHeader + auth_token_ + "\n";
@@ -250,9 +251,11 @@ DeviceManagementRegisterJob::DeviceManagementRegisterJob(
const std::string& device_id,
const em::DeviceRegisterRequest& request,
DeviceManagementBackend::DeviceRegisterResponseDelegate* delegate)
- : DeviceManagementJobBase(backend_impl, "register"),
+ : DeviceManagementJobBase(
+ backend_impl,
+ DeviceManagementBackendImpl::kValueRequestRegister,
+ device_id),
delegate_(delegate) {
- SetDeviceID(device_id);
SetAuthToken(auth_token);
em::DeviceManagementRequest request_wrapper;
request_wrapper.mutable_register_request()->CopyFrom(request);
@@ -264,6 +267,7 @@ class DeviceManagementUnregisterJob : public DeviceManagementJobBase {
public:
DeviceManagementUnregisterJob(
DeviceManagementBackendImpl* backend_impl,
+ const std::string& device_id,
const std::string& device_management_token,
const em::DeviceUnregisterRequest& request,
DeviceManagementBackend::DeviceUnregisterResponseDelegate* delegate);
@@ -286,9 +290,13 @@ class DeviceManagementUnregisterJob : public DeviceManagementJobBase {
DeviceManagementUnregisterJob::DeviceManagementUnregisterJob(
DeviceManagementBackendImpl* backend_impl,
const std::string& device_management_token,
+ const std::string& device_id,
const em::DeviceUnregisterRequest& request,
DeviceManagementBackend::DeviceUnregisterResponseDelegate* delegate)
- : DeviceManagementJobBase(backend_impl, "unregister"),
+ : DeviceManagementJobBase(
+ backend_impl,
+ DeviceManagementBackendImpl::kValueRequestUnregister,
+ device_id),
delegate_(delegate) {
SetDeviceManagementToken(device_management_token);
em::DeviceManagementRequest request_wrapper;
@@ -302,6 +310,7 @@ class DeviceManagementPolicyJob : public DeviceManagementJobBase {
DeviceManagementPolicyJob(
DeviceManagementBackendImpl* backend_impl,
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DeviceManagementBackend::DevicePolicyResponseDelegate* delegate);
virtual ~DeviceManagementPolicyJob() {}
@@ -323,9 +332,13 @@ class DeviceManagementPolicyJob : public DeviceManagementJobBase {
DeviceManagementPolicyJob::DeviceManagementPolicyJob(
DeviceManagementBackendImpl* backend_impl,
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DeviceManagementBackend::DevicePolicyResponseDelegate* delegate)
- : DeviceManagementJobBase(backend_impl, "policy"),
+ : DeviceManagementJobBase(
+ backend_impl,
+ DeviceManagementBackendImpl::kValueRequestPolicy,
+ device_id),
delegate_(delegate) {
SetDeviceManagementToken(device_management_token);
em::DeviceManagementRequest request_wrapper;
@@ -350,6 +363,14 @@ DeviceManagementBackendImpl::~DeviceManagementBackendImpl() {
}
}
+std::string DeviceManagementBackendImpl::GetAgentString() {
+ chrome::VersionInfo version_info;
+ return base::StringPrintf(kValueAgent,
+ version_info.Name().c_str(),
+ version_info.Version().c_str(),
+ version_info.LastChange().c_str());
+}
+
void DeviceManagementBackendImpl::JobDone(DeviceManagementJobBase* job) {
pending_jobs_.erase(job);
}
@@ -370,18 +391,20 @@ void DeviceManagementBackendImpl::ProcessRegisterRequest(
void DeviceManagementBackendImpl::ProcessUnregisterRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DeviceUnregisterRequest& request,
DeviceUnregisterResponseDelegate* delegate) {
AddJob(new DeviceManagementUnregisterJob(this, device_management_token,
- request, delegate));
+ device_id, request, delegate));
}
void DeviceManagementBackendImpl::ProcessPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate) {
- AddJob(new DeviceManagementPolicyJob(this, device_management_token, request,
- delegate));
+ AddJob(new DeviceManagementPolicyJob(this, device_management_token, device_id,
+ request, delegate));
}
} // namespace policy
diff --git a/chrome/browser/policy/device_management_backend_impl.h b/chrome/browser/policy/device_management_backend_impl.h
index aa43681..d818b4d 100644
--- a/chrome/browser/policy/device_management_backend_impl.h
+++ b/chrome/browser/policy/device_management_backend_impl.h
@@ -24,6 +24,22 @@ class DeviceManagementBackendImpl : public DeviceManagementBackend {
explicit DeviceManagementBackendImpl(DeviceManagementService* service);
virtual ~DeviceManagementBackendImpl();
+ static std::string GetAgentString();
+
+ // Name constants for URL query parameters.
+ static const char kParamRequest[];
+ static const char kParamDeviceType[];
+ static const char kParamAppType[];
+ static const char kParamDeviceID[];
+ static const char kParamAgent[];
+
+ // String constants for the device and app type we report to the server.
+ static const char kValueRequestRegister[];
+ static const char kValueRequestUnregister[];
+ static const char kValueRequestPolicy[];
+ static const char kValueDeviceType[];
+ static const char kValueAppType[];
+
private:
friend class DeviceManagementJobBase;
@@ -44,10 +60,12 @@ class DeviceManagementBackendImpl : public DeviceManagementBackend {
DeviceRegisterResponseDelegate* response_delegate);
virtual void ProcessUnregisterRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DeviceUnregisterRequest& request,
DeviceUnregisterResponseDelegate* response_delegate);
virtual void ProcessPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* response_delegate);
diff --git a/chrome/browser/policy/device_management_policy_provider.cc b/chrome/browser/policy/device_management_policy_provider.cc
index dc7bc00..25cfc32 100644
--- a/chrome/browser/policy/device_management_policy_provider.cc
+++ b/chrome/browser/policy/device_management_policy_provider.cc
@@ -140,6 +140,7 @@ void DeviceManagementPolicyProvider::SendPolicyRequest() {
policy_request.add_setting_request();
setting->set_key(kChromeDevicePolicySettingKey);
backend_->ProcessPolicyRequest(token_fetcher_->GetDeviceToken(),
+ token_fetcher_->GetDeviceID(),
policy_request, this);
policy_request_pending_ = true;
}
diff --git a/chrome/browser/policy/device_management_policy_provider_unittest.cc b/chrome/browser/policy/device_management_policy_provider_unittest.cc
index bd27e48..5717286 100644
--- a/chrome/browser/policy/device_management_policy_provider_unittest.cc
+++ b/chrome/browser/policy/device_management_policy_provider_unittest.cc
@@ -63,7 +63,7 @@ class DeviceManagementPolicyProviderTest : public testing::Test {
MockConfigurationPolicyStore store;
backend_->AllShouldSucceed();
EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1);
- EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _)).Times(1);
+ EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(1);
SimulateSuccessfulLoginAndRunPending();
EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
provider_->Provide(&store);
@@ -113,7 +113,7 @@ TEST_F(DeviceManagementPolicyProviderTest, EmptyProvideWithFailedBackend) {
MockConfigurationPolicyStore store;
backend_->AllShouldFail();
EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1);
- EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _)).Times(0);
+ EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(0);
SimulateSuccessfulLoginAndRunPending();
EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(0);
provider_->Provide(&store);
@@ -129,7 +129,7 @@ TEST_F(DeviceManagementPolicyProviderTest, SecondProvide) {
// Simulate a app relaunch by constructing a new provider. Policy should be
// immediately provided and no refresh should be triggered.
CreateNewBackend();
- EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _)).Times(0);
+ EXPECT_CALL(*backend_, ProcessPolicyRequest(_, _, _, _)).Times(0);
CreateNewProvider();
MockConfigurationPolicyStore store;
EXPECT_CALL(store, Apply(kPolicyDisableSpdy, _)).Times(1);
diff --git a/chrome/browser/policy/device_management_service_browsertest.cc b/chrome/browser/policy/device_management_service_browsertest.cc
index b7205b5..70a8e1b 100644
--- a/chrome/browser/policy/device_management_service_browsertest.cc
+++ b/chrome/browser/policy/device_management_service_browsertest.cc
@@ -103,7 +103,7 @@ IN_PROC_BROWSER_TEST_F(DeviceManagementServiceIntegrationTest,
::CaptureToken),
InvokeWithoutArgs(QuitMessageLoop)));
em::DeviceRegisterRequest request;
- backend->ProcessRegisterRequest("token", "device id", request, &delegate);
+ backend->ProcessRegisterRequest("token", "testid", request, &delegate);
MessageLoop::current()->Run();
}
@@ -118,7 +118,7 @@ IN_PROC_BROWSER_TEST_F(DeviceManagementServiceIntegrationTest,
em::DevicePolicySettingRequest* setting_request =
request.add_setting_request();
setting_request->set_key("policy");
- backend->ProcessPolicyRequest(token_, request, &delegate);
+ backend->ProcessPolicyRequest(token_, "testid", request, &delegate);
MessageLoop::current()->Run();
}
@@ -130,7 +130,7 @@ IN_PROC_BROWSER_TEST_F(DeviceManagementServiceIntegrationTest,
EXPECT_CALL(delegate, HandleUnregisterResponse(_))
.WillOnce(InvokeWithoutArgs(QuitMessageLoop));
em::DeviceUnregisterRequest request;
- backend->ProcessUnregisterRequest(token_, request, &delegate);
+ backend->ProcessUnregisterRequest(token_, "testid", request, &delegate);
MessageLoop::current()->Run();
}
@@ -154,7 +154,7 @@ IN_PROC_BROWSER_TEST_F(DeviceManagementServiceIntegrationTest,
::CaptureToken),
InvokeWithoutArgs(QuitMessageLoop)));
em::DeviceRegisterRequest request;
- backend->ProcessRegisterRequest("token", "device id", request, &delegate);
+ backend->ProcessRegisterRequest("token", "testid", request, &delegate);
MessageLoop::current()->Run();
}
@@ -169,7 +169,7 @@ IN_PROC_BROWSER_TEST_F(DeviceManagementServiceIntegrationTest,
em::DevicePolicySettingRequest* setting_request =
request.add_setting_request();
setting_request->set_key("policy");
- backend->ProcessPolicyRequest(token_, request, &delegate);
+ backend->ProcessPolicyRequest(token_, "testid", request, &delegate);
MessageLoop::current()->Run();
}
@@ -179,7 +179,7 @@ IN_PROC_BROWSER_TEST_F(DeviceManagementServiceIntegrationTest,
EXPECT_CALL(delegate, HandleUnregisterResponse(_))
.WillOnce(InvokeWithoutArgs(QuitMessageLoop));
em::DeviceUnregisterRequest request;
- backend->ProcessUnregisterRequest(token_, request, &delegate);
+ backend->ProcessUnregisterRequest(token_, "testid", request, &delegate);
MessageLoop::current()->Run();
}
diff --git a/chrome/browser/policy/device_management_service_unittest.cc b/chrome/browser/policy/device_management_service_unittest.cc
index cabc7f7..ea6fece 100644
--- a/chrome/browser/policy/device_management_service_unittest.cc
+++ b/chrome/browser/policy/device_management_service_unittest.cc
@@ -5,6 +5,7 @@
#include "base/message_loop.h"
#include "base/string_split.h"
#include "chrome/browser/browser_thread.h"
+#include "chrome/browser/policy/device_management_backend_impl.h"
#include "chrome/browser/policy/device_management_backend_mock.h"
#include "chrome/browser/policy/device_management_service.h"
#include "chrome/common/net/test_url_fetcher_factory.h"
@@ -30,6 +31,11 @@ const char kResponseErrorActivationPending[] = "\x08\x04";
#define PROTO_STRING(name) (std::string(name, arraysize(name) - 1))
+// Some helper constants.
+const char kAuthToken[] = "auth-token";
+const char kDMToken[] = "device-management-token";
+const char kDeviceId[] = "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.
@@ -98,7 +104,7 @@ TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) {
DeviceRegisterResponseDelegateMock mock;
EXPECT_CALL(mock, OnError(GetParam().expected_error_));
em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest("token", "device id", request, &mock);
+ backend_->ProcessRegisterRequest(kAuthToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -114,7 +120,7 @@ TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) {
DeviceUnregisterResponseDelegateMock mock;
EXPECT_CALL(mock, OnError(GetParam().expected_error_));
em::DeviceUnregisterRequest request;
- backend_->ProcessUnregisterRequest("token", request, &mock);
+ backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -134,7 +140,7 @@ TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) {
em::DevicePolicySettingRequest* setting_request =
request.add_setting_request();
setting_request->set_key("policy");
- backend_->ProcessPolicyRequest("token", request, &mock);
+ backend_->ProcessPolicyRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -186,18 +192,6 @@ INSTANTIATE_TEST_CASE_P(
200,
PROTO_STRING(kResponseErrorActivationPending))));
-class DeviceManagementServiceTest
- : public DeviceManagementServiceTestBase<testing::Test> {
-};
-
-MATCHER_P(MessageEquals, reference, "") {
- std::string reference_data;
- std::string arg_data;
- return arg.SerializeToString(&arg_data) &&
- reference.SerializeToString(&reference_data) &&
- arg_data == reference_data;
-}
-
// Simple query parameter parser for testing.
class QueryParams {
public:
@@ -238,26 +232,56 @@ class QueryParams {
ParamMap params_;
};
+class DeviceManagementServiceTest
+ : public DeviceManagementServiceTestBase<testing::Test> {
+ protected:
+ void CheckURLAndQueryParams(const GURL& request_url,
+ const std::string& request_type,
+ const std::string& device_id) {
+ const GURL service_url(kServiceUrl);
+ EXPECT_EQ(service_url.scheme(), request_url.scheme());
+ EXPECT_EQ(service_url.host(), request_url.host());
+ EXPECT_EQ(service_url.port(), request_url.port());
+ 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()));
+ }
+};
+
+MATCHER_P(MessageEquals, reference, "") {
+ std::string reference_data;
+ std::string arg_data;
+ return arg.SerializeToString(&arg_data) &&
+ reference.SerializeToString(&reference_data) &&
+ arg_data == reference_data;
+}
+
TEST_F(DeviceManagementServiceTest, RegisterRequest) {
DeviceRegisterResponseDelegateMock mock;
em::DeviceRegisterResponse expected_response;
- expected_response.set_device_management_token("mtoken");
+ expected_response.set_device_management_token(kDMToken);
EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest("token", "device id", request, &mock);
+ backend_->ProcessRegisterRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- // Check the data the fetcher received.
- const GURL& request_url(fetcher->original_url());
- const GURL service_url(kServiceUrl);
- EXPECT_EQ(service_url.scheme(), request_url.scheme());
- EXPECT_EQ(service_url.host(), request_url.host());
- EXPECT_EQ(service_url.port(), request_url.port());
- EXPECT_EQ(service_url.path(), request_url.path());
-
- QueryParams query_params(request_url.query());
- EXPECT_TRUE(query_params.Check("request", "register"));
+ CheckURLAndQueryParams(fetcher->original_url(),
+ DeviceManagementBackendImpl::kValueRequestRegister,
+ kDeviceId);
em::DeviceManagementRequest expected_request_wrapper;
expected_request_wrapper.mutable_register_request()->CopyFrom(request);
@@ -286,7 +310,7 @@ TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
em::DeviceUnregisterResponse expected_response;
EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response)));
em::DeviceUnregisterRequest request;
- backend_->ProcessUnregisterRequest("dmtokenvalue", request, &mock);
+ backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -298,8 +322,9 @@ TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
EXPECT_EQ(service_url.port(), request_url.port());
EXPECT_EQ(service_url.path(), request_url.path());
- QueryParams query_params(request_url.query());
- EXPECT_TRUE(query_params.Check("request", "unregister"));
+ CheckURLAndQueryParams(fetcher->original_url(),
+ DeviceManagementBackendImpl::kValueRequestUnregister,
+ kDeviceId);
em::DeviceManagementRequest expected_request_wrapper;
expected_request_wrapper.mutable_unregister_request()->CopyFrom(request);
@@ -348,20 +373,13 @@ TEST_F(DeviceManagementServiceTest, PolicyRequest) {
request.add_setting_request();
setting_request->set_key("policy");
setting_request->set_watermark("stale");
- backend_->ProcessPolicyRequest("dmtokenvalue", request, &mock);
+ backend_->ProcessPolicyRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
- // Check the data the fetcher received.
- const GURL& request_url(fetcher->original_url());
- const GURL service_url(kServiceUrl);
- EXPECT_EQ(service_url.scheme(), request_url.scheme());
- EXPECT_EQ(service_url.host(), request_url.host());
- EXPECT_EQ(service_url.port(), request_url.port());
- EXPECT_EQ(service_url.path(), request_url.path());
-
- QueryParams query_params(request_url.query());
- EXPECT_TRUE(query_params.Check("request", "policy"));
+ CheckURLAndQueryParams(fetcher->original_url(),
+ DeviceManagementBackendImpl::kValueRequestPolicy,
+ kDeviceId);
em::DeviceManagementRequest expected_request_wrapper;
expected_request_wrapper.mutable_policy_request()->CopyFrom(request);
@@ -389,7 +407,7 @@ TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) {
DeviceRegisterResponseDelegateMock mock;
EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest("token", "device id", request, &mock);
+ backend_->ProcessRegisterRequest(kAuthToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -401,7 +419,7 @@ TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) {
DeviceUnregisterResponseDelegateMock mock;
EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0);
em::DeviceUnregisterRequest request;
- backend_->ProcessUnregisterRequest("dmtokenvalue", request, &mock);
+ backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -418,7 +436,7 @@ TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) {
request.add_setting_request();
setting_request->set_key("policy");
setting_request->set_watermark("stale");
- backend_->ProcessPolicyRequest("dmtokenvalue", request, &mock);
+ backend_->ProcessPolicyRequest(kDMToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
@@ -433,10 +451,10 @@ TEST_F(DeviceManagementServiceTest, JobQueueing) {
// Make a request. We should not see any fetchers being created.
DeviceRegisterResponseDelegateMock mock;
em::DeviceRegisterResponse expected_response;
- expected_response.set_device_management_token("mtoken");
+ expected_response.set_device_management_token(kDMToken);
EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
em::DeviceRegisterRequest request;
- backend_->ProcessRegisterRequest("token", "device id", request, &mock);
+ backend_->ProcessRegisterRequest(kAuthToken, kDeviceId, request, &mock);
TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
ASSERT_FALSE(fetcher);
diff --git a/chrome/browser/policy/mock_device_management_backend.cc b/chrome/browser/policy/mock_device_management_backend.cc
index 613022f..05d2c3c 100644
--- a/chrome/browser/policy/mock_device_management_backend.cc
+++ b/chrome/browser/policy/mock_device_management_backend.cc
@@ -42,7 +42,7 @@ void MockDeviceManagementBackend::AllShouldSucceed() {
WillByDefault(Invoke(
this,
&MockDeviceManagementBackend::SimulateSuccessfulRegisterRequest));
- ON_CALL(*this, ProcessPolicyRequest(_, _, _)).
+ ON_CALL(*this, ProcessPolicyRequest(_, _, _, _)).
WillByDefault(Invoke(
this,
&MockDeviceManagementBackend::SimulateSuccessfulPolicyRequest));
@@ -53,7 +53,7 @@ void MockDeviceManagementBackend::AllShouldFail() {
WillByDefault(Invoke(
this,
&MockDeviceManagementBackend::SimulateFailedRegisterRequest));
- ON_CALL(*this, ProcessPolicyRequest(_, _, _)).
+ ON_CALL(*this, ProcessPolicyRequest(_, _, _, _)).
WillByDefault(Invoke(
this,
&MockDeviceManagementBackend::SimulateFailedPolicyRequest));
@@ -90,6 +90,7 @@ void MockDeviceManagementBackend::SimulateSuccessfulRegisterRequest(
void MockDeviceManagementBackend::SimulateSuccessfulPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate) {
delegate->HandlePolicyResponse(policy_response_);
@@ -105,6 +106,7 @@ void MockDeviceManagementBackend::SimulateFailedRegisterRequest(
void MockDeviceManagementBackend::SimulateFailedPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate) {
delegate->OnError(kErrorRequestFailed);
diff --git a/chrome/browser/policy/mock_device_management_backend.h b/chrome/browser/policy/mock_device_management_backend.h
index f0612f4..6b3258c 100644
--- a/chrome/browser/policy/mock_device_management_backend.h
+++ b/chrome/browser/policy/mock_device_management_backend.h
@@ -34,13 +34,15 @@ class MockDeviceManagementBackend
const em::DeviceRegisterRequest& request,
DeviceRegisterResponseDelegate* delegate));
- MOCK_METHOD3(ProcessUnregisterRequest, void(
+ MOCK_METHOD4(ProcessUnregisterRequest, void(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DeviceUnregisterRequest& request,
DeviceUnregisterResponseDelegate* delegate));
- MOCK_METHOD3(ProcessPolicyRequest, void(
+ MOCK_METHOD4(ProcessPolicyRequest, void(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate));
@@ -56,6 +58,7 @@ class MockDeviceManagementBackend
void SimulateSuccessfulPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate);
@@ -67,6 +70,7 @@ class MockDeviceManagementBackend
void SimulateFailedPolicyRequest(
const std::string& device_management_token,
+ const std::string& device_id,
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate);
diff --git a/net/tools/testserver/device_management.py b/net/tools/testserver/device_management.py
index aec323a..d715227 100644
--- a/net/tools/testserver/device_management.py
+++ b/net/tools/testserver/device_management.py
@@ -227,13 +227,15 @@ class RequestHandler(object):
"""
error = None
dmtoken = None
+ request_device_id = self.GetUniqueParam('deviceid')
match = re.match('GoogleDMToken token=(\\w+)',
self._headers.getheader('Authorization', ''))
if match:
dmtoken = match.group(1)
if not dmtoken:
error = dm.DeviceManagementResponse.DEVICE_MANAGEMENT_TOKEN_INVALID
- elif not self._server.LookupDevice(dmtoken):
+ elif (not request_device_id or
+ not self._server.LookupDevice(dmtoken) == request_device_id):
error = dm.DeviceManagementResponse.DEVICE_NOT_FOUND
else:
return (dmtoken, None)