| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/message_loop.h" | 5 #include "base/message_loop.h" |
| 6 #include "base/string_split.h" | 6 #include "base/string_split.h" |
| 7 #include "chrome/browser/browser_thread.h" | 7 #include "chrome/browser/browser_thread.h" |
| 8 #include "chrome/browser/policy/device_management_backend_impl.h" |
| 8 #include "chrome/browser/policy/device_management_backend_mock.h" | 9 #include "chrome/browser/policy/device_management_backend_mock.h" |
| 9 #include "chrome/browser/policy/device_management_service.h" | 10 #include "chrome/browser/policy/device_management_service.h" |
| 10 #include "chrome/common/net/test_url_fetcher_factory.h" | 11 #include "chrome/common/net/test_url_fetcher_factory.h" |
| 11 #include "chrome/test/test_url_request_context_getter.h" | 12 #include "chrome/test/test_url_request_context_getter.h" |
| 12 #include "net/base/escape.h" | 13 #include "net/base/escape.h" |
| 13 #include "net/url_request/url_request_status.h" | 14 #include "net/url_request/url_request_status.h" |
| 14 #include "net/url_request/url_request_unittest.h" | 15 #include "net/url_request/url_request_unittest.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "testing/gmock/include/gmock/gmock.h" | 17 #include "testing/gmock/include/gmock/gmock.h" |
| 17 | 18 |
| 18 using testing::_; | 19 using testing::_; |
| 19 | 20 |
| 20 namespace policy { | 21 namespace policy { |
| 21 | 22 |
| 22 const char kServiceUrl[] = "https://example.com/management_service"; | 23 const char kServiceUrl[] = "https://example.com/management_service"; |
| 23 | 24 |
| 24 // Encoded error response messages for testing the error code paths. | 25 // Encoded error response messages for testing the error code paths. |
| 25 const char kResponseEmpty[] = "\x08\x00"; | 26 const char kResponseEmpty[] = "\x08\x00"; |
| 26 const char kResponseErrorManagementNotSupported[] = "\x08\x01"; | 27 const char kResponseErrorManagementNotSupported[] = "\x08\x01"; |
| 27 const char kResponseErrorDeviceNotFound[] = "\x08\x02"; | 28 const char kResponseErrorDeviceNotFound[] = "\x08\x02"; |
| 28 const char kResponseErrorManagementTokenInvalid[] = "\x08\x03"; | 29 const char kResponseErrorManagementTokenInvalid[] = "\x08\x03"; |
| 29 const char kResponseErrorActivationPending[] = "\x08\x04"; | 30 const char kResponseErrorActivationPending[] = "\x08\x04"; |
| 30 | 31 |
| 31 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1)) | 32 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1)) |
| 32 | 33 |
| 34 // Some helper constants. |
| 35 const char kAuthToken[] = "auth-token"; |
| 36 const char kDMToken[] = "device-management-token"; |
| 37 const char kDeviceId[] = "device-id"; |
| 38 |
| 33 // Unit tests for the device management policy service. The tests are run | 39 // Unit tests for the device management policy service. The tests are run |
| 34 // against a TestURLFetcherFactory that is used to short-circuit the request | 40 // against a TestURLFetcherFactory that is used to short-circuit the request |
| 35 // without calling into the actual network stack. | 41 // without calling into the actual network stack. |
| 36 template<typename TESTBASE> | 42 template<typename TESTBASE> |
| 37 class DeviceManagementServiceTestBase : public TESTBASE { | 43 class DeviceManagementServiceTestBase : public TESTBASE { |
| 38 protected: | 44 protected: |
| 39 DeviceManagementServiceTestBase() | 45 DeviceManagementServiceTestBase() |
| 40 : request_context_(new TestURLRequestContextGetter()), | 46 : request_context_(new TestURLRequestContextGetter()), |
| 41 io_thread_(BrowserThread::IO, &loop_) { | 47 io_thread_(BrowserThread::IO, &loop_) { |
| 42 ResetService(); | 48 ResetService(); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 // the same for all kinds of requests. | 97 // the same for all kinds of requests. |
| 92 class DeviceManagementServiceFailedRequestTest | 98 class DeviceManagementServiceFailedRequestTest |
| 93 : public DeviceManagementServiceTestBase< | 99 : public DeviceManagementServiceTestBase< |
| 94 testing::TestWithParam<FailedRequestParams> > { | 100 testing::TestWithParam<FailedRequestParams> > { |
| 95 }; | 101 }; |
| 96 | 102 |
| 97 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { | 103 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { |
| 98 DeviceRegisterResponseDelegateMock mock; | 104 DeviceRegisterResponseDelegateMock mock; |
| 99 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); | 105 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); |
| 100 em::DeviceRegisterRequest request; | 106 em::DeviceRegisterRequest request; |
| 101 backend_->ProcessRegisterRequest("token", "device id", request, &mock); | 107 backend_->ProcessRegisterRequest(kAuthToken, kDeviceId, request, &mock); |
| 102 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 108 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 103 ASSERT_TRUE(fetcher); | 109 ASSERT_TRUE(fetcher); |
| 104 | 110 |
| 105 fetcher->delegate()->OnURLFetchComplete(fetcher, | 111 fetcher->delegate()->OnURLFetchComplete(fetcher, |
| 106 GURL(kServiceUrl), | 112 GURL(kServiceUrl), |
| 107 GetParam().request_status_, | 113 GetParam().request_status_, |
| 108 GetParam().http_status_, | 114 GetParam().http_status_, |
| 109 ResponseCookies(), | 115 ResponseCookies(), |
| 110 GetParam().response_); | 116 GetParam().response_); |
| 111 } | 117 } |
| 112 | 118 |
| 113 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { | 119 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { |
| 114 DeviceUnregisterResponseDelegateMock mock; | 120 DeviceUnregisterResponseDelegateMock mock; |
| 115 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); | 121 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); |
| 116 em::DeviceUnregisterRequest request; | 122 em::DeviceUnregisterRequest request; |
| 117 backend_->ProcessUnregisterRequest("token", request, &mock); | 123 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); |
| 118 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 124 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 119 ASSERT_TRUE(fetcher); | 125 ASSERT_TRUE(fetcher); |
| 120 | 126 |
| 121 fetcher->delegate()->OnURLFetchComplete(fetcher, | 127 fetcher->delegate()->OnURLFetchComplete(fetcher, |
| 122 GURL(kServiceUrl), | 128 GURL(kServiceUrl), |
| 123 GetParam().request_status_, | 129 GetParam().request_status_, |
| 124 GetParam().http_status_, | 130 GetParam().http_status_, |
| 125 ResponseCookies(), | 131 ResponseCookies(), |
| 126 GetParam().response_); | 132 GetParam().response_); |
| 127 } | 133 } |
| 128 | 134 |
| 129 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { | 135 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { |
| 130 DevicePolicyResponseDelegateMock mock; | 136 DevicePolicyResponseDelegateMock mock; |
| 131 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); | 137 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); |
| 132 em::DevicePolicyRequest request; | 138 em::DevicePolicyRequest request; |
| 133 request.set_policy_scope("Chrome"); | 139 request.set_policy_scope("Chrome"); |
| 134 em::DevicePolicySettingRequest* setting_request = | 140 em::DevicePolicySettingRequest* setting_request = |
| 135 request.add_setting_request(); | 141 request.add_setting_request(); |
| 136 setting_request->set_key("policy"); | 142 setting_request->set_key("policy"); |
| 137 backend_->ProcessPolicyRequest("token", request, &mock); | 143 backend_->ProcessPolicyRequest(kDMToken, kDeviceId, request, &mock); |
| 138 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 144 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 139 ASSERT_TRUE(fetcher); | 145 ASSERT_TRUE(fetcher); |
| 140 | 146 |
| 141 fetcher->delegate()->OnURLFetchComplete(fetcher, | 147 fetcher->delegate()->OnURLFetchComplete(fetcher, |
| 142 GURL(kServiceUrl), | 148 GURL(kServiceUrl), |
| 143 GetParam().request_status_, | 149 GetParam().request_status_, |
| 144 GetParam().http_status_, | 150 GetParam().http_status_, |
| 145 ResponseCookies(), | 151 ResponseCookies(), |
| 146 GetParam().response_); | 152 GetParam().response_); |
| 147 } | 153 } |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 DeviceManagementBackend::kErrorServiceManagementTokenInvalid, | 185 DeviceManagementBackend::kErrorServiceManagementTokenInvalid, |
| 180 URLRequestStatus::SUCCESS, | 186 URLRequestStatus::SUCCESS, |
| 181 200, | 187 200, |
| 182 PROTO_STRING(kResponseErrorManagementTokenInvalid)), | 188 PROTO_STRING(kResponseErrorManagementTokenInvalid)), |
| 183 FailedRequestParams( | 189 FailedRequestParams( |
| 184 DeviceManagementBackend::kErrorServiceActivationPending, | 190 DeviceManagementBackend::kErrorServiceActivationPending, |
| 185 URLRequestStatus::SUCCESS, | 191 URLRequestStatus::SUCCESS, |
| 186 200, | 192 200, |
| 187 PROTO_STRING(kResponseErrorActivationPending)))); | 193 PROTO_STRING(kResponseErrorActivationPending)))); |
| 188 | 194 |
| 189 class DeviceManagementServiceTest | |
| 190 : public DeviceManagementServiceTestBase<testing::Test> { | |
| 191 }; | |
| 192 | |
| 193 MATCHER_P(MessageEquals, reference, "") { | |
| 194 std::string reference_data; | |
| 195 std::string arg_data; | |
| 196 return arg.SerializeToString(&arg_data) && | |
| 197 reference.SerializeToString(&reference_data) && | |
| 198 arg_data == reference_data; | |
| 199 } | |
| 200 | |
| 201 // Simple query parameter parser for testing. | 195 // Simple query parameter parser for testing. |
| 202 class QueryParams { | 196 class QueryParams { |
| 203 public: | 197 public: |
| 204 explicit QueryParams(const std::string& query) { | 198 explicit QueryParams(const std::string& query) { |
| 205 base::SplitStringIntoKeyValuePairs(query, '=', '&', ¶ms_); | 199 base::SplitStringIntoKeyValuePairs(query, '=', '&', ¶ms_); |
| 206 } | 200 } |
| 207 | 201 |
| 208 bool Check(const std::string& name, const std::string& expected_value) { | 202 bool Check(const std::string& name, const std::string& expected_value) { |
| 209 bool found = false; | 203 bool found = false; |
| 210 for (ParamMap::const_iterator i(params_.begin()); i != params_.end(); ++i) { | 204 for (ParamMap::const_iterator i(params_.begin()); i != params_.end(); ++i) { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 231 } | 225 } |
| 232 } | 226 } |
| 233 return found; | 227 return found; |
| 234 } | 228 } |
| 235 | 229 |
| 236 private: | 230 private: |
| 237 typedef std::vector<std::pair<std::string, std::string> > ParamMap; | 231 typedef std::vector<std::pair<std::string, std::string> > ParamMap; |
| 238 ParamMap params_; | 232 ParamMap params_; |
| 239 }; | 233 }; |
| 240 | 234 |
| 235 class DeviceManagementServiceTest |
| 236 : public DeviceManagementServiceTestBase<testing::Test> { |
| 237 protected: |
| 238 void CheckURLAndQueryParams(const GURL& request_url, |
| 239 const std::string& request_type, |
| 240 const std::string& device_id) { |
| 241 const GURL service_url(kServiceUrl); |
| 242 EXPECT_EQ(service_url.scheme(), request_url.scheme()); |
| 243 EXPECT_EQ(service_url.host(), request_url.host()); |
| 244 EXPECT_EQ(service_url.port(), request_url.port()); |
| 245 EXPECT_EQ(service_url.path(), request_url.path()); |
| 246 |
| 247 QueryParams query_params(request_url.query()); |
| 248 EXPECT_TRUE(query_params.Check( |
| 249 DeviceManagementBackendImpl::kParamRequest, request_type)); |
| 250 EXPECT_TRUE(query_params.Check( |
| 251 DeviceManagementBackendImpl::kParamDeviceID, device_id)); |
| 252 EXPECT_TRUE(query_params.Check( |
| 253 DeviceManagementBackendImpl::kParamDeviceType, |
| 254 DeviceManagementBackendImpl::kValueDeviceType)); |
| 255 EXPECT_TRUE(query_params.Check( |
| 256 DeviceManagementBackendImpl::kParamAppType, |
| 257 DeviceManagementBackendImpl::kValueAppType)); |
| 258 EXPECT_TRUE(query_params.Check( |
| 259 DeviceManagementBackendImpl::kParamAgent, |
| 260 DeviceManagementBackendImpl::GetAgentString())); |
| 261 } |
| 262 }; |
| 263 |
| 264 MATCHER_P(MessageEquals, reference, "") { |
| 265 std::string reference_data; |
| 266 std::string arg_data; |
| 267 return arg.SerializeToString(&arg_data) && |
| 268 reference.SerializeToString(&reference_data) && |
| 269 arg_data == reference_data; |
| 270 } |
| 271 |
| 241 TEST_F(DeviceManagementServiceTest, RegisterRequest) { | 272 TEST_F(DeviceManagementServiceTest, RegisterRequest) { |
| 242 DeviceRegisterResponseDelegateMock mock; | 273 DeviceRegisterResponseDelegateMock mock; |
| 243 em::DeviceRegisterResponse expected_response; | 274 em::DeviceRegisterResponse expected_response; |
| 244 expected_response.set_device_management_token("mtoken"); | 275 expected_response.set_device_management_token(kDMToken); |
| 245 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response))); | 276 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response))); |
| 246 em::DeviceRegisterRequest request; | 277 em::DeviceRegisterRequest request; |
| 247 backend_->ProcessRegisterRequest("token", "device id", request, &mock); | 278 backend_->ProcessRegisterRequest(kDMToken, kDeviceId, request, &mock); |
| 248 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 279 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 249 ASSERT_TRUE(fetcher); | 280 ASSERT_TRUE(fetcher); |
| 250 | 281 |
| 251 // Check the data the fetcher received. | 282 CheckURLAndQueryParams(fetcher->original_url(), |
| 252 const GURL& request_url(fetcher->original_url()); | 283 DeviceManagementBackendImpl::kValueRequestRegister, |
| 253 const GURL service_url(kServiceUrl); | 284 kDeviceId); |
| 254 EXPECT_EQ(service_url.scheme(), request_url.scheme()); | |
| 255 EXPECT_EQ(service_url.host(), request_url.host()); | |
| 256 EXPECT_EQ(service_url.port(), request_url.port()); | |
| 257 EXPECT_EQ(service_url.path(), request_url.path()); | |
| 258 | |
| 259 QueryParams query_params(request_url.query()); | |
| 260 EXPECT_TRUE(query_params.Check("request", "register")); | |
| 261 | 285 |
| 262 em::DeviceManagementRequest expected_request_wrapper; | 286 em::DeviceManagementRequest expected_request_wrapper; |
| 263 expected_request_wrapper.mutable_register_request()->CopyFrom(request); | 287 expected_request_wrapper.mutable_register_request()->CopyFrom(request); |
| 264 std::string expected_request_data; | 288 std::string expected_request_data; |
| 265 ASSERT_TRUE(expected_request_wrapper.SerializeToString( | 289 ASSERT_TRUE(expected_request_wrapper.SerializeToString( |
| 266 &expected_request_data)); | 290 &expected_request_data)); |
| 267 EXPECT_EQ(expected_request_data, fetcher->upload_data()); | 291 EXPECT_EQ(expected_request_data, fetcher->upload_data()); |
| 268 | 292 |
| 269 // Generate the response. | 293 // Generate the response. |
| 270 std::string response_data; | 294 std::string response_data; |
| 271 em::DeviceManagementResponse response_wrapper; | 295 em::DeviceManagementResponse response_wrapper; |
| 272 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); | 296 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); |
| 273 response_wrapper.mutable_register_response()->CopyFrom(expected_response); | 297 response_wrapper.mutable_register_response()->CopyFrom(expected_response); |
| 274 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); | 298 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); |
| 275 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); | 299 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
| 276 fetcher->delegate()->OnURLFetchComplete(fetcher, | 300 fetcher->delegate()->OnURLFetchComplete(fetcher, |
| 277 GURL(kServiceUrl), | 301 GURL(kServiceUrl), |
| 278 status, | 302 status, |
| 279 200, | 303 200, |
| 280 ResponseCookies(), | 304 ResponseCookies(), |
| 281 response_data); | 305 response_data); |
| 282 } | 306 } |
| 283 | 307 |
| 284 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { | 308 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { |
| 285 DeviceUnregisterResponseDelegateMock mock; | 309 DeviceUnregisterResponseDelegateMock mock; |
| 286 em::DeviceUnregisterResponse expected_response; | 310 em::DeviceUnregisterResponse expected_response; |
| 287 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response))); | 311 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response))); |
| 288 em::DeviceUnregisterRequest request; | 312 em::DeviceUnregisterRequest request; |
| 289 backend_->ProcessUnregisterRequest("dmtokenvalue", request, &mock); | 313 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); |
| 290 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 314 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 291 ASSERT_TRUE(fetcher); | 315 ASSERT_TRUE(fetcher); |
| 292 | 316 |
| 293 // Check the data the fetcher received. | 317 // Check the data the fetcher received. |
| 294 const GURL& request_url(fetcher->original_url()); | 318 const GURL& request_url(fetcher->original_url()); |
| 295 const GURL service_url(kServiceUrl); | 319 const GURL service_url(kServiceUrl); |
| 296 EXPECT_EQ(service_url.scheme(), request_url.scheme()); | 320 EXPECT_EQ(service_url.scheme(), request_url.scheme()); |
| 297 EXPECT_EQ(service_url.host(), request_url.host()); | 321 EXPECT_EQ(service_url.host(), request_url.host()); |
| 298 EXPECT_EQ(service_url.port(), request_url.port()); | 322 EXPECT_EQ(service_url.port(), request_url.port()); |
| 299 EXPECT_EQ(service_url.path(), request_url.path()); | 323 EXPECT_EQ(service_url.path(), request_url.path()); |
| 300 | 324 |
| 301 QueryParams query_params(request_url.query()); | 325 CheckURLAndQueryParams(fetcher->original_url(), |
| 302 EXPECT_TRUE(query_params.Check("request", "unregister")); | 326 DeviceManagementBackendImpl::kValueRequestUnregister, |
| 327 kDeviceId); |
| 303 | 328 |
| 304 em::DeviceManagementRequest expected_request_wrapper; | 329 em::DeviceManagementRequest expected_request_wrapper; |
| 305 expected_request_wrapper.mutable_unregister_request()->CopyFrom(request); | 330 expected_request_wrapper.mutable_unregister_request()->CopyFrom(request); |
| 306 std::string expected_request_data; | 331 std::string expected_request_data; |
| 307 ASSERT_TRUE(expected_request_wrapper.SerializeToString( | 332 ASSERT_TRUE(expected_request_wrapper.SerializeToString( |
| 308 &expected_request_data)); | 333 &expected_request_data)); |
| 309 EXPECT_EQ(expected_request_data, fetcher->upload_data()); | 334 EXPECT_EQ(expected_request_data, fetcher->upload_data()); |
| 310 | 335 |
| 311 // Generate the response. | 336 // Generate the response. |
| 312 std::string response_data; | 337 std::string response_data; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 341 em::GenericValue::VALUE_TYPE_BOOL); | 366 em::GenericValue::VALUE_TYPE_BOOL); |
| 342 named_value->mutable_value()->set_bool_value(false); | 367 named_value->mutable_value()->set_bool_value(false); |
| 343 EXPECT_CALL(mock, HandlePolicyResponse(MessageEquals(expected_response))); | 368 EXPECT_CALL(mock, HandlePolicyResponse(MessageEquals(expected_response))); |
| 344 | 369 |
| 345 em::DevicePolicyRequest request; | 370 em::DevicePolicyRequest request; |
| 346 request.set_policy_scope("chromeos/device"); | 371 request.set_policy_scope("chromeos/device"); |
| 347 em::DevicePolicySettingRequest* setting_request = | 372 em::DevicePolicySettingRequest* setting_request = |
| 348 request.add_setting_request(); | 373 request.add_setting_request(); |
| 349 setting_request->set_key("policy"); | 374 setting_request->set_key("policy"); |
| 350 setting_request->set_watermark("stale"); | 375 setting_request->set_watermark("stale"); |
| 351 backend_->ProcessPolicyRequest("dmtokenvalue", request, &mock); | 376 backend_->ProcessPolicyRequest(kDMToken, kDeviceId, request, &mock); |
| 352 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 377 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 353 ASSERT_TRUE(fetcher); | 378 ASSERT_TRUE(fetcher); |
| 354 | 379 |
| 355 // Check the data the fetcher received. | 380 CheckURLAndQueryParams(fetcher->original_url(), |
| 356 const GURL& request_url(fetcher->original_url()); | 381 DeviceManagementBackendImpl::kValueRequestPolicy, |
| 357 const GURL service_url(kServiceUrl); | 382 kDeviceId); |
| 358 EXPECT_EQ(service_url.scheme(), request_url.scheme()); | |
| 359 EXPECT_EQ(service_url.host(), request_url.host()); | |
| 360 EXPECT_EQ(service_url.port(), request_url.port()); | |
| 361 EXPECT_EQ(service_url.path(), request_url.path()); | |
| 362 | |
| 363 QueryParams query_params(request_url.query()); | |
| 364 EXPECT_TRUE(query_params.Check("request", "policy")); | |
| 365 | 383 |
| 366 em::DeviceManagementRequest expected_request_wrapper; | 384 em::DeviceManagementRequest expected_request_wrapper; |
| 367 expected_request_wrapper.mutable_policy_request()->CopyFrom(request); | 385 expected_request_wrapper.mutable_policy_request()->CopyFrom(request); |
| 368 std::string expected_request_data; | 386 std::string expected_request_data; |
| 369 ASSERT_TRUE(expected_request_wrapper.SerializeToString( | 387 ASSERT_TRUE(expected_request_wrapper.SerializeToString( |
| 370 &expected_request_data)); | 388 &expected_request_data)); |
| 371 EXPECT_EQ(expected_request_data, fetcher->upload_data()); | 389 EXPECT_EQ(expected_request_data, fetcher->upload_data()); |
| 372 | 390 |
| 373 // Generate the response. | 391 // Generate the response. |
| 374 std::string response_data; | 392 std::string response_data; |
| 375 em::DeviceManagementResponse response_wrapper; | 393 em::DeviceManagementResponse response_wrapper; |
| 376 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); | 394 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); |
| 377 response_wrapper.mutable_policy_response()->CopyFrom(expected_response); | 395 response_wrapper.mutable_policy_response()->CopyFrom(expected_response); |
| 378 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); | 396 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); |
| 379 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); | 397 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
| 380 fetcher->delegate()->OnURLFetchComplete(fetcher, | 398 fetcher->delegate()->OnURLFetchComplete(fetcher, |
| 381 GURL(kServiceUrl), | 399 GURL(kServiceUrl), |
| 382 status, | 400 status, |
| 383 200, | 401 200, |
| 384 ResponseCookies(), | 402 ResponseCookies(), |
| 385 response_data); | 403 response_data); |
| 386 } | 404 } |
| 387 | 405 |
| 388 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { | 406 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { |
| 389 DeviceRegisterResponseDelegateMock mock; | 407 DeviceRegisterResponseDelegateMock mock; |
| 390 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); | 408 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); |
| 391 em::DeviceRegisterRequest request; | 409 em::DeviceRegisterRequest request; |
| 392 backend_->ProcessRegisterRequest("token", "device id", request, &mock); | 410 backend_->ProcessRegisterRequest(kAuthToken, kDeviceId, request, &mock); |
| 393 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 411 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 394 ASSERT_TRUE(fetcher); | 412 ASSERT_TRUE(fetcher); |
| 395 | 413 |
| 396 // There shouldn't be any callbacks. | 414 // There shouldn't be any callbacks. |
| 397 backend_.reset(); | 415 backend_.reset(); |
| 398 } | 416 } |
| 399 | 417 |
| 400 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { | 418 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { |
| 401 DeviceUnregisterResponseDelegateMock mock; | 419 DeviceUnregisterResponseDelegateMock mock; |
| 402 EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0); | 420 EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0); |
| 403 em::DeviceUnregisterRequest request; | 421 em::DeviceUnregisterRequest request; |
| 404 backend_->ProcessUnregisterRequest("dmtokenvalue", request, &mock); | 422 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); |
| 405 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 423 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 406 ASSERT_TRUE(fetcher); | 424 ASSERT_TRUE(fetcher); |
| 407 | 425 |
| 408 // There shouldn't be any callbacks. | 426 // There shouldn't be any callbacks. |
| 409 backend_.reset(); | 427 backend_.reset(); |
| 410 } | 428 } |
| 411 | 429 |
| 412 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) { | 430 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) { |
| 413 DevicePolicyResponseDelegateMock mock; | 431 DevicePolicyResponseDelegateMock mock; |
| 414 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0); | 432 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0); |
| 415 em::DevicePolicyRequest request; | 433 em::DevicePolicyRequest request; |
| 416 request.set_policy_scope("chromium"); | 434 request.set_policy_scope("chromium"); |
| 417 em::DevicePolicySettingRequest* setting_request = | 435 em::DevicePolicySettingRequest* setting_request = |
| 418 request.add_setting_request(); | 436 request.add_setting_request(); |
| 419 setting_request->set_key("policy"); | 437 setting_request->set_key("policy"); |
| 420 setting_request->set_watermark("stale"); | 438 setting_request->set_watermark("stale"); |
| 421 backend_->ProcessPolicyRequest("dmtokenvalue", request, &mock); | 439 backend_->ProcessPolicyRequest(kDMToken, kDeviceId, request, &mock); |
| 422 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 440 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 423 ASSERT_TRUE(fetcher); | 441 ASSERT_TRUE(fetcher); |
| 424 | 442 |
| 425 // There shouldn't be any callbacks. | 443 // There shouldn't be any callbacks. |
| 426 backend_.reset(); | 444 backend_.reset(); |
| 427 } | 445 } |
| 428 | 446 |
| 429 TEST_F(DeviceManagementServiceTest, JobQueueing) { | 447 TEST_F(DeviceManagementServiceTest, JobQueueing) { |
| 430 // Start with a non-initialized service. | 448 // Start with a non-initialized service. |
| 431 ResetService(); | 449 ResetService(); |
| 432 | 450 |
| 433 // Make a request. We should not see any fetchers being created. | 451 // Make a request. We should not see any fetchers being created. |
| 434 DeviceRegisterResponseDelegateMock mock; | 452 DeviceRegisterResponseDelegateMock mock; |
| 435 em::DeviceRegisterResponse expected_response; | 453 em::DeviceRegisterResponse expected_response; |
| 436 expected_response.set_device_management_token("mtoken"); | 454 expected_response.set_device_management_token(kDMToken); |
| 437 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response))); | 455 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response))); |
| 438 em::DeviceRegisterRequest request; | 456 em::DeviceRegisterRequest request; |
| 439 backend_->ProcessRegisterRequest("token", "device id", request, &mock); | 457 backend_->ProcessRegisterRequest(kAuthToken, kDeviceId, request, &mock); |
| 440 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 458 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 441 ASSERT_FALSE(fetcher); | 459 ASSERT_FALSE(fetcher); |
| 442 | 460 |
| 443 // Now initialize the service. That should start the job. | 461 // Now initialize the service. That should start the job. |
| 444 service_->Initialize(request_context_.get()); | 462 service_->Initialize(request_context_.get()); |
| 445 fetcher = factory_.GetFetcherByID(0); | 463 fetcher = factory_.GetFetcherByID(0); |
| 446 ASSERT_TRUE(fetcher); | 464 ASSERT_TRUE(fetcher); |
| 447 factory_.RemoveFetcherFromMap(0); | 465 factory_.RemoveFetcherFromMap(0); |
| 448 | 466 |
| 449 // Check that the request is processed as expected. | 467 // Check that the request is processed as expected. |
| 450 std::string response_data; | 468 std::string response_data; |
| 451 em::DeviceManagementResponse response_wrapper; | 469 em::DeviceManagementResponse response_wrapper; |
| 452 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); | 470 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); |
| 453 response_wrapper.mutable_register_response()->CopyFrom(expected_response); | 471 response_wrapper.mutable_register_response()->CopyFrom(expected_response); |
| 454 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); | 472 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); |
| 455 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); | 473 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); |
| 456 fetcher->delegate()->OnURLFetchComplete(fetcher, | 474 fetcher->delegate()->OnURLFetchComplete(fetcher, |
| 457 GURL(kServiceUrl), | 475 GURL(kServiceUrl), |
| 458 status, | 476 status, |
| 459 200, | 477 200, |
| 460 ResponseCookies(), | 478 ResponseCookies(), |
| 461 response_data); | 479 response_data); |
| 462 } | 480 } |
| 463 | 481 |
| 464 } // namespace policy | 482 } // namespace policy |
| OLD | NEW |