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

Side by Side Diff: chrome/browser/policy/device_management_service_unittest.cc

Issue 5153002: Use a service to create device management backends. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments. Created 10 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "chrome/browser/policy/device_management_backend_impl.h"
6
7 #include "base/message_loop.h" 5 #include "base/message_loop.h"
8 #include "base/string_split.h" 6 #include "base/string_split.h"
9 #include "chrome/browser/browser_thread.h" 7 #include "chrome/browser/browser_thread.h"
10 #include "chrome/browser/policy/device_management_backend_mock.h" 8 #include "chrome/browser/policy/device_management_backend_mock.h"
9 #include "chrome/browser/policy/device_management_service.h"
11 #include "chrome/common/net/test_url_fetcher_factory.h" 10 #include "chrome/common/net/test_url_fetcher_factory.h"
11 #include "chrome/test/test_url_request_context_getter.h"
12 #include "net/base/escape.h" 12 #include "net/base/escape.h"
13 #include "net/url_request/url_request_status.h" 13 #include "net/url_request/url_request_status.h"
14 #include "net/url_request/url_request_unittest.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 #include "testing/gmock/include/gmock/gmock.h" 16 #include "testing/gmock/include/gmock/gmock.h"
16 17
17 using testing::_; 18 using testing::_;
18 19
19 namespace policy { 20 namespace policy {
20 21
21 namespace { 22 const char kServiceUrl[] = "https://example.com/management_service";
22
23 const char kServiceURL[] = "https://example.com/management_service";
24 23
25 // Encoded error response messages for testing the error code paths. 24 // Encoded error response messages for testing the error code paths.
26 const char kResponseEmpty[] = "\x08\x00"; 25 const char kResponseEmpty[] = "\x08\x00";
27 const char kResponseErrorManagementNotSupported[] = "\x08\x01"; 26 const char kResponseErrorManagementNotSupported[] = "\x08\x01";
28 const char kResponseErrorDeviceNotFound[] = "\x08\x02"; 27 const char kResponseErrorDeviceNotFound[] = "\x08\x02";
29 const char kResponseErrorManagementTokenInvalid[] = "\x08\x03"; 28 const char kResponseErrorManagementTokenInvalid[] = "\x08\x03";
30 const char kResponseErrorActivationPending[] = "\x08\x04"; 29 const char kResponseErrorActivationPending[] = "\x08\x04";
31 30
32 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1)) 31 #define PROTO_STRING(name) (std::string(name, arraysize(name) - 1))
33 32
34 } // namespace 33 // Unit tests for the device management policy service. The tests are run
35 34 // against a TestURLFetcherFactory that is used to short-circuit the request
36 // Unit tests for the google apps policy backend. The pattern here is each test 35 // without calling into the actual network stack.
37 // case triggeres a request and installs a mock delegate. The test will run and
38 // the default action installed on the test delegate will quit the loop.
39 template<typename TESTBASE> 36 template<typename TESTBASE>
40 class DeviceManagementBackendImplTestBase : public TESTBASE { 37 class DeviceManagementServiceTestBase : public TESTBASE {
41 protected: 38 protected:
42 DeviceManagementBackendImplTestBase() 39 DeviceManagementServiceTestBase()
43 : io_thread_(BrowserThread::IO, &loop_), 40 : request_context_(new TestURLRequestContextGetter()),
44 service_(kServiceURL) {} 41 io_thread_(BrowserThread::IO, &loop_) {
42 ResetService();
43 service_->Initialize(request_context_.get());
44 }
45 45
46 virtual void SetUp() { 46 virtual void SetUp() {
47 URLFetcher::set_factory(&factory_); 47 URLFetcher::set_factory(&factory_);
48 } 48 }
49 49
50 virtual void TearDown() { 50 virtual void TearDown() {
51 URLFetcher::set_factory(NULL); 51 URLFetcher::set_factory(NULL);
52 backend_.reset();
53 service_.reset();
54 request_context_ = NULL;
52 loop_.RunAllPending(); 55 loop_.RunAllPending();
53 } 56 }
54 57
58 void ResetService() {
59 backend_.reset();
60 service_.reset(new DeviceManagementService(kServiceUrl));
61 backend_.reset(service_->CreateBackend());
62 }
63
64 TestURLFetcherFactory factory_;
65 scoped_refptr<TestURLRequestContextGetter> request_context_;
66 scoped_ptr<DeviceManagementService> service_;
67 scoped_ptr<DeviceManagementBackend> backend_;
68
69 private:
55 MessageLoopForUI loop_; 70 MessageLoopForUI loop_;
56 BrowserThread io_thread_; 71 BrowserThread io_thread_;
57 TestURLFetcherFactory factory_;
58 DeviceManagementBackendImpl service_;
59 }; 72 };
60 73
61 struct FailedRequestParams { 74 struct FailedRequestParams {
62 FailedRequestParams(DeviceManagementBackend::ErrorCode expected_error, 75 FailedRequestParams(DeviceManagementBackend::ErrorCode expected_error,
63 URLRequestStatus::Status request_status, 76 URLRequestStatus::Status request_status,
64 int http_status, 77 int http_status,
65 const std::string& response) 78 const std::string& response)
66 : expected_error_(expected_error), 79 : expected_error_(expected_error),
67 request_status_(request_status, 0), 80 request_status_(request_status, 0),
68 http_status_(http_status), 81 http_status_(http_status),
69 response_(response) {} 82 response_(response) {}
70 83
71 DeviceManagementBackend::ErrorCode expected_error_; 84 DeviceManagementBackend::ErrorCode expected_error_;
72 URLRequestStatus request_status_; 85 URLRequestStatus request_status_;
73 int http_status_; 86 int http_status_;
74 std::string response_; 87 std::string response_;
75 }; 88 };
76 89
77 // A parameterized test case for erroneous response situations, they're mostly 90 // A parameterized test case for erroneous response situations, they're mostly
78 // the same for all kinds of requests. 91 // the same for all kinds of requests.
79 class DeviceManagementBackendImplFailedRequestTest 92 class DeviceManagementServiceFailedRequestTest
80 : public DeviceManagementBackendImplTestBase< 93 : public DeviceManagementServiceTestBase<
81 testing::TestWithParam<FailedRequestParams> > { 94 testing::TestWithParam<FailedRequestParams> > {
82 }; 95 };
83 96
84 TEST_P(DeviceManagementBackendImplFailedRequestTest, RegisterRequest) { 97 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) {
85 DeviceRegisterResponseDelegateMock mock; 98 DeviceRegisterResponseDelegateMock mock;
86 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 99 EXPECT_CALL(mock, OnError(GetParam().expected_error_));
87 em::DeviceRegisterRequest request; 100 em::DeviceRegisterRequest request;
88 service_.ProcessRegisterRequest("token", "device id", request, &mock); 101 backend_->ProcessRegisterRequest("token", "device id", request, &mock);
89 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 102 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
90 ASSERT_TRUE(fetcher); 103 ASSERT_TRUE(fetcher);
91 104
92 fetcher->delegate()->OnURLFetchComplete(fetcher, 105 fetcher->delegate()->OnURLFetchComplete(fetcher,
93 GURL(kServiceURL), 106 GURL(kServiceUrl),
94 GetParam().request_status_, 107 GetParam().request_status_,
95 GetParam().http_status_, 108 GetParam().http_status_,
96 ResponseCookies(), 109 ResponseCookies(),
97 GetParam().response_); 110 GetParam().response_);
98 } 111 }
99 112
100 TEST_P(DeviceManagementBackendImplFailedRequestTest, UnregisterRequest) { 113 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) {
101 DeviceUnregisterResponseDelegateMock mock; 114 DeviceUnregisterResponseDelegateMock mock;
102 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 115 EXPECT_CALL(mock, OnError(GetParam().expected_error_));
103 em::DeviceUnregisterRequest request; 116 em::DeviceUnregisterRequest request;
104 service_.ProcessUnregisterRequest("token", request, &mock); 117 backend_->ProcessUnregisterRequest("token", request, &mock);
105 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 118 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
106 ASSERT_TRUE(fetcher); 119 ASSERT_TRUE(fetcher);
107 120
108 fetcher->delegate()->OnURLFetchComplete(fetcher, 121 fetcher->delegate()->OnURLFetchComplete(fetcher,
109 GURL(kServiceURL), 122 GURL(kServiceUrl),
110 GetParam().request_status_, 123 GetParam().request_status_,
111 GetParam().http_status_, 124 GetParam().http_status_,
112 ResponseCookies(), 125 ResponseCookies(),
113 GetParam().response_); 126 GetParam().response_);
114 } 127 }
115 128
116 TEST_P(DeviceManagementBackendImplFailedRequestTest, PolicyRequest) { 129 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) {
117 DevicePolicyResponseDelegateMock mock; 130 DevicePolicyResponseDelegateMock mock;
118 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); 131 EXPECT_CALL(mock, OnError(GetParam().expected_error_));
119 em::DevicePolicyRequest request; 132 em::DevicePolicyRequest request;
120 request.set_policy_scope("Chrome"); 133 request.set_policy_scope("Chrome");
121 em::DevicePolicySettingRequest* setting_request = 134 em::DevicePolicySettingRequest* setting_request =
122 request.add_setting_request(); 135 request.add_setting_request();
123 setting_request->set_key("policy"); 136 setting_request->set_key("policy");
124 service_.ProcessPolicyRequest("token", request, &mock); 137 backend_->ProcessPolicyRequest("token", request, &mock);
125 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 138 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
126 ASSERT_TRUE(fetcher); 139 ASSERT_TRUE(fetcher);
127 140
128 fetcher->delegate()->OnURLFetchComplete(fetcher, 141 fetcher->delegate()->OnURLFetchComplete(fetcher,
129 GURL(kServiceURL), 142 GURL(kServiceUrl),
130 GetParam().request_status_, 143 GetParam().request_status_,
131 GetParam().http_status_, 144 GetParam().http_status_,
132 ResponseCookies(), 145 ResponseCookies(),
133 GetParam().response_); 146 GetParam().response_);
134 } 147 }
135 148
136 INSTANTIATE_TEST_CASE_P( 149 INSTANTIATE_TEST_CASE_P(
137 DeviceManagementBackendImplFailedRequestTestInstance, 150 DeviceManagementServiceFailedRequestTestInstance,
138 DeviceManagementBackendImplFailedRequestTest, 151 DeviceManagementServiceFailedRequestTest,
139 testing::Values( 152 testing::Values(
140 FailedRequestParams( 153 FailedRequestParams(
141 DeviceManagementBackend::kErrorRequestFailed, 154 DeviceManagementBackend::kErrorRequestFailed,
142 URLRequestStatus::FAILED, 155 URLRequestStatus::FAILED,
143 200, 156 200,
144 PROTO_STRING(kResponseEmpty)), 157 PROTO_STRING(kResponseEmpty)),
145 FailedRequestParams( 158 FailedRequestParams(
146 DeviceManagementBackend::kErrorHttpStatus, 159 DeviceManagementBackend::kErrorHttpStatus,
147 URLRequestStatus::SUCCESS, 160 URLRequestStatus::SUCCESS,
148 500, 161 500,
(...skipping 17 matching lines...) Expand all
166 DeviceManagementBackend::kErrorServiceManagementTokenInvalid, 179 DeviceManagementBackend::kErrorServiceManagementTokenInvalid,
167 URLRequestStatus::SUCCESS, 180 URLRequestStatus::SUCCESS,
168 200, 181 200,
169 PROTO_STRING(kResponseErrorManagementTokenInvalid)), 182 PROTO_STRING(kResponseErrorManagementTokenInvalid)),
170 FailedRequestParams( 183 FailedRequestParams(
171 DeviceManagementBackend::kErrorServiceActivationPending, 184 DeviceManagementBackend::kErrorServiceActivationPending,
172 URLRequestStatus::SUCCESS, 185 URLRequestStatus::SUCCESS,
173 200, 186 200,
174 PROTO_STRING(kResponseErrorActivationPending)))); 187 PROTO_STRING(kResponseErrorActivationPending))));
175 188
176 class DeviceManagementBackendImplTest 189 class DeviceManagementServiceTest
177 : public DeviceManagementBackendImplTestBase<testing::Test> { 190 : public DeviceManagementServiceTestBase<testing::Test> {
178 }; 191 };
179 192
180 MATCHER_P(MessageEquals, reference, "") { 193 MATCHER_P(MessageEquals, reference, "") {
181 std::string reference_data; 194 std::string reference_data;
182 std::string arg_data; 195 std::string arg_data;
183 return arg.SerializeToString(&arg_data) && 196 return arg.SerializeToString(&arg_data) &&
184 reference.SerializeToString(&reference_data) && 197 reference.SerializeToString(&reference_data) &&
185 arg_data == reference_data; 198 arg_data == reference_data;
186 } 199 }
187 200
(...skipping 30 matching lines...) Expand all
218 } 231 }
219 } 232 }
220 return found; 233 return found;
221 } 234 }
222 235
223 private: 236 private:
224 typedef std::vector<std::pair<std::string, std::string> > ParamMap; 237 typedef std::vector<std::pair<std::string, std::string> > ParamMap;
225 ParamMap params_; 238 ParamMap params_;
226 }; 239 };
227 240
228 TEST_F(DeviceManagementBackendImplTest, RegisterRequest) { 241 TEST_F(DeviceManagementServiceTest, RegisterRequest) {
229 DeviceRegisterResponseDelegateMock mock; 242 DeviceRegisterResponseDelegateMock mock;
230 em::DeviceRegisterResponse expected_response; 243 em::DeviceRegisterResponse expected_response;
231 expected_response.set_device_management_token("mtoken"); 244 expected_response.set_device_management_token("mtoken");
232 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response))); 245 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
233 em::DeviceRegisterRequest request; 246 em::DeviceRegisterRequest request;
234 service_.ProcessRegisterRequest("token", "device id", request, &mock); 247 backend_->ProcessRegisterRequest("token", "device id", request, &mock);
235 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 248 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
236 ASSERT_TRUE(fetcher); 249 ASSERT_TRUE(fetcher);
237 250
238 // Check the data the fetcher received. 251 // Check the data the fetcher received.
239 const GURL& request_url(fetcher->original_url()); 252 const GURL& request_url(fetcher->original_url());
240 const GURL service_url(kServiceURL); 253 const GURL service_url(kServiceUrl);
241 EXPECT_EQ(service_url.scheme(), request_url.scheme()); 254 EXPECT_EQ(service_url.scheme(), request_url.scheme());
242 EXPECT_EQ(service_url.host(), request_url.host()); 255 EXPECT_EQ(service_url.host(), request_url.host());
243 EXPECT_EQ(service_url.port(), request_url.port()); 256 EXPECT_EQ(service_url.port(), request_url.port());
244 EXPECT_EQ(service_url.path(), request_url.path()); 257 EXPECT_EQ(service_url.path(), request_url.path());
245 258
246 QueryParams query_params(request_url.query()); 259 QueryParams query_params(request_url.query());
247 EXPECT_TRUE(query_params.Check("request", "register")); 260 EXPECT_TRUE(query_params.Check("request", "register"));
248 261
249 em::DeviceManagementRequest expected_request_wrapper; 262 em::DeviceManagementRequest expected_request_wrapper;
250 expected_request_wrapper.mutable_register_request()->CopyFrom(request); 263 expected_request_wrapper.mutable_register_request()->CopyFrom(request);
251 std::string expected_request_data; 264 std::string expected_request_data;
252 ASSERT_TRUE(expected_request_wrapper.SerializeToString( 265 ASSERT_TRUE(expected_request_wrapper.SerializeToString(
253 &expected_request_data)); 266 &expected_request_data));
254 EXPECT_EQ(expected_request_data, fetcher->upload_data()); 267 EXPECT_EQ(expected_request_data, fetcher->upload_data());
255 268
256 // Generate the response. 269 // Generate the response.
257 std::string response_data; 270 std::string response_data;
258 em::DeviceManagementResponse response_wrapper; 271 em::DeviceManagementResponse response_wrapper;
259 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); 272 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS);
260 response_wrapper.mutable_register_response()->CopyFrom(expected_response); 273 response_wrapper.mutable_register_response()->CopyFrom(expected_response);
261 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); 274 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
262 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); 275 URLRequestStatus status(URLRequestStatus::SUCCESS, 0);
263 fetcher->delegate()->OnURLFetchComplete(fetcher, 276 fetcher->delegate()->OnURLFetchComplete(fetcher,
264 GURL(kServiceURL), 277 GURL(kServiceUrl),
265 status, 278 status,
266 200, 279 200,
267 ResponseCookies(), 280 ResponseCookies(),
268 response_data); 281 response_data);
269 } 282 }
270 283
271 TEST_F(DeviceManagementBackendImplTest, UnregisterRequest) { 284 TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
272 DeviceUnregisterResponseDelegateMock mock; 285 DeviceUnregisterResponseDelegateMock mock;
273 em::DeviceUnregisterResponse expected_response; 286 em::DeviceUnregisterResponse expected_response;
274 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response))); 287 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response)));
275 em::DeviceUnregisterRequest request; 288 em::DeviceUnregisterRequest request;
276 service_.ProcessUnregisterRequest("dmtokenvalue", request, &mock); 289 backend_->ProcessUnregisterRequest("dmtokenvalue", request, &mock);
277 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 290 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
278 ASSERT_TRUE(fetcher); 291 ASSERT_TRUE(fetcher);
279 292
280 // Check the data the fetcher received. 293 // Check the data the fetcher received.
281 const GURL& request_url(fetcher->original_url()); 294 const GURL& request_url(fetcher->original_url());
282 const GURL service_url(kServiceURL); 295 const GURL service_url(kServiceUrl);
283 EXPECT_EQ(service_url.scheme(), request_url.scheme()); 296 EXPECT_EQ(service_url.scheme(), request_url.scheme());
284 EXPECT_EQ(service_url.host(), request_url.host()); 297 EXPECT_EQ(service_url.host(), request_url.host());
285 EXPECT_EQ(service_url.port(), request_url.port()); 298 EXPECT_EQ(service_url.port(), request_url.port());
286 EXPECT_EQ(service_url.path(), request_url.path()); 299 EXPECT_EQ(service_url.path(), request_url.path());
287 300
288 QueryParams query_params(request_url.query()); 301 QueryParams query_params(request_url.query());
289 EXPECT_TRUE(query_params.Check("request", "unregister")); 302 EXPECT_TRUE(query_params.Check("request", "unregister"));
290 303
291 em::DeviceManagementRequest expected_request_wrapper; 304 em::DeviceManagementRequest expected_request_wrapper;
292 expected_request_wrapper.mutable_unregister_request()->CopyFrom(request); 305 expected_request_wrapper.mutable_unregister_request()->CopyFrom(request);
293 std::string expected_request_data; 306 std::string expected_request_data;
294 ASSERT_TRUE(expected_request_wrapper.SerializeToString( 307 ASSERT_TRUE(expected_request_wrapper.SerializeToString(
295 &expected_request_data)); 308 &expected_request_data));
296 EXPECT_EQ(expected_request_data, fetcher->upload_data()); 309 EXPECT_EQ(expected_request_data, fetcher->upload_data());
297 310
298 // Generate the response. 311 // Generate the response.
299 std::string response_data; 312 std::string response_data;
300 em::DeviceManagementResponse response_wrapper; 313 em::DeviceManagementResponse response_wrapper;
301 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); 314 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS);
302 response_wrapper.mutable_unregister_response()->CopyFrom(expected_response); 315 response_wrapper.mutable_unregister_response()->CopyFrom(expected_response);
303 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); 316 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
304 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); 317 URLRequestStatus status(URLRequestStatus::SUCCESS, 0);
305 fetcher->delegate()->OnURLFetchComplete(fetcher, 318 fetcher->delegate()->OnURLFetchComplete(fetcher,
306 GURL(kServiceURL), 319 GURL(kServiceUrl),
307 status, 320 status,
308 200, 321 200,
309 ResponseCookies(), 322 ResponseCookies(),
310 response_data); 323 response_data);
311 } 324 }
312 325
313 TEST_F(DeviceManagementBackendImplTest, PolicyRequest) { 326 TEST_F(DeviceManagementServiceTest, PolicyRequest) {
314 DevicePolicyResponseDelegateMock mock; 327 DevicePolicyResponseDelegateMock mock;
315 em::DevicePolicyResponse expected_response; 328 em::DevicePolicyResponse expected_response;
316 em::DevicePolicySetting* policy_setting = expected_response.add_setting(); 329 em::DevicePolicySetting* policy_setting = expected_response.add_setting();
317 policy_setting->set_policy_key("policy"); 330 policy_setting->set_policy_key("chrome-policy");
318 policy_setting->set_watermark("fresh"); 331 policy_setting->set_watermark("fresh");
319 em::GenericSetting* policy_value = policy_setting->mutable_policy_value(); 332 em::GenericSetting* policy_value = policy_setting->mutable_policy_value();
320 em::GenericNamedValue* named_value = policy_value->add_named_value(); 333 em::GenericNamedValue* named_value = policy_value->add_named_value();
321 named_value->set_name("HomepageLocation"); 334 named_value->set_name("HomepageLocation");
322 named_value->mutable_value()->set_value_type( 335 named_value->mutable_value()->set_value_type(
323 em::GenericValue::VALUE_TYPE_STRING); 336 em::GenericValue::VALUE_TYPE_STRING);
324 named_value->mutable_value()->set_string_value("http://www.chromium.org"); 337 named_value->mutable_value()->set_string_value("http://www.chromium.org");
325 named_value = policy_value->add_named_value(); 338 named_value = policy_value->add_named_value();
326 named_value->set_name("HomepageIsNewTabPage"); 339 named_value->set_name("HomepageIsNewTabPage");
327 named_value->mutable_value()->set_value_type( 340 named_value->mutable_value()->set_value_type(
328 em::GenericValue::VALUE_TYPE_BOOL); 341 em::GenericValue::VALUE_TYPE_BOOL);
329 named_value->mutable_value()->set_bool_value(false); 342 named_value->mutable_value()->set_bool_value(false);
330 EXPECT_CALL(mock, HandlePolicyResponse(MessageEquals(expected_response))); 343 EXPECT_CALL(mock, HandlePolicyResponse(MessageEquals(expected_response)));
331 344
332 em::DevicePolicyRequest request; 345 em::DevicePolicyRequest request;
333 request.set_policy_scope("chromium"); 346 request.set_policy_scope("chromeos/device");
334 em::DevicePolicySettingRequest* setting_request = 347 em::DevicePolicySettingRequest* setting_request =
335 request.add_setting_request(); 348 request.add_setting_request();
336 setting_request->set_key("policy"); 349 setting_request->set_key("policy");
337 setting_request->set_watermark("stale"); 350 setting_request->set_watermark("stale");
338 service_.ProcessPolicyRequest("dmtokenvalue", request, &mock); 351 backend_->ProcessPolicyRequest("dmtokenvalue", request, &mock);
339 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); 352 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
340 ASSERT_TRUE(fetcher); 353 ASSERT_TRUE(fetcher);
341 354
342 // Check the data the fetcher received. 355 // Check the data the fetcher received.
343 const GURL& request_url(fetcher->original_url()); 356 const GURL& request_url(fetcher->original_url());
344 const GURL service_url(kServiceURL); 357 const GURL service_url(kServiceUrl);
345 EXPECT_EQ(service_url.scheme(), request_url.scheme()); 358 EXPECT_EQ(service_url.scheme(), request_url.scheme());
346 EXPECT_EQ(service_url.host(), request_url.host()); 359 EXPECT_EQ(service_url.host(), request_url.host());
347 EXPECT_EQ(service_url.port(), request_url.port()); 360 EXPECT_EQ(service_url.port(), request_url.port());
348 EXPECT_EQ(service_url.path(), request_url.path()); 361 EXPECT_EQ(service_url.path(), request_url.path());
349 362
350 QueryParams query_params(request_url.query()); 363 QueryParams query_params(request_url.query());
351 EXPECT_TRUE(query_params.Check("request", "policy")); 364 EXPECT_TRUE(query_params.Check("request", "policy"));
352 365
353 em::DeviceManagementRequest expected_request_wrapper; 366 em::DeviceManagementRequest expected_request_wrapper;
354 expected_request_wrapper.mutable_policy_request()->CopyFrom(request); 367 expected_request_wrapper.mutable_policy_request()->CopyFrom(request);
355 std::string expected_request_data; 368 std::string expected_request_data;
356 ASSERT_TRUE(expected_request_wrapper.SerializeToString( 369 ASSERT_TRUE(expected_request_wrapper.SerializeToString(
357 &expected_request_data)); 370 &expected_request_data));
358 EXPECT_EQ(expected_request_data, fetcher->upload_data()); 371 EXPECT_EQ(expected_request_data, fetcher->upload_data());
359 372
360 // Generate the response. 373 // Generate the response.
361 std::string response_data; 374 std::string response_data;
362 em::DeviceManagementResponse response_wrapper; 375 em::DeviceManagementResponse response_wrapper;
363 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS); 376 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS);
364 response_wrapper.mutable_policy_response()->CopyFrom(expected_response); 377 response_wrapper.mutable_policy_response()->CopyFrom(expected_response);
365 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); 378 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
366 URLRequestStatus status(URLRequestStatus::SUCCESS, 0); 379 URLRequestStatus status(URLRequestStatus::SUCCESS, 0);
367 fetcher->delegate()->OnURLFetchComplete(fetcher, 380 fetcher->delegate()->OnURLFetchComplete(fetcher,
368 GURL(kServiceURL), 381 GURL(kServiceUrl),
369 status, 382 status,
370 200, 383 200,
371 ResponseCookies(), 384 ResponseCookies(),
385 response_data);
386 }
387
388 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) {
389 DeviceRegisterResponseDelegateMock mock;
390 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0);
391 em::DeviceRegisterRequest request;
392 backend_->ProcessRegisterRequest("token", "device id", request, &mock);
393 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
394 ASSERT_TRUE(fetcher);
395
396 // There shouldn't be any callbacks.
397 backend_.reset();
398 }
399
400 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) {
401 DeviceUnregisterResponseDelegateMock mock;
402 EXPECT_CALL(mock, HandleUnregisterResponse(_)).Times(0);
403 em::DeviceUnregisterRequest request;
404 backend_->ProcessUnregisterRequest("dmtokenvalue", request, &mock);
405 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
406 ASSERT_TRUE(fetcher);
407
408 // There shouldn't be any callbacks.
409 backend_.reset();
410 }
411
412 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) {
413 DevicePolicyResponseDelegateMock mock;
414 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0);
415 em::DevicePolicyRequest request;
416 request.set_policy_scope("chromium");
417 em::DevicePolicySettingRequest* setting_request =
418 request.add_setting_request();
419 setting_request->set_key("policy");
420 setting_request->set_watermark("stale");
421 backend_->ProcessPolicyRequest("dmtokenvalue", request, &mock);
422 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
423 ASSERT_TRUE(fetcher);
424
425 // There shouldn't be any callbacks.
426 backend_.reset();
427 }
428
429 TEST_F(DeviceManagementServiceTest, JobQueueing) {
430 // Start with a non-initialized service.
431 ResetService();
432
433 // Make a request. We should not see any fetchers being created.
434 DeviceRegisterResponseDelegateMock mock;
435 em::DeviceRegisterResponse expected_response;
436 expected_response.set_device_management_token("mtoken");
437 EXPECT_CALL(mock, HandleRegisterResponse(MessageEquals(expected_response)));
438 em::DeviceRegisterRequest request;
439 backend_->ProcessRegisterRequest("token", "device id", request, &mock);
440 TestURLFetcher* fetcher = factory_.GetFetcherByID(0);
441 ASSERT_FALSE(fetcher);
442
443 // Now initialize the service. That should start the job.
444 service_->Initialize(request_context_.get());
445 fetcher = factory_.GetFetcherByID(0);
446 ASSERT_TRUE(fetcher);
447 factory_.RemoveFetcherFromMap(0);
448
449 // Check that the request is processed as expected.
450 std::string response_data;
451 em::DeviceManagementResponse response_wrapper;
452 response_wrapper.set_error(em::DeviceManagementResponse::SUCCESS);
453 response_wrapper.mutable_register_response()->CopyFrom(expected_response);
454 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data));
455 URLRequestStatus status(URLRequestStatus::SUCCESS, 0);
456 fetcher->delegate()->OnURLFetchComplete(fetcher,
457 GURL(kServiceUrl),
458 status,
459 200,
460 ResponseCookies(),
372 response_data); 461 response_data);
373 } 462 }
374 463
375 } // namespace policy 464 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698