diff options
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) |