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

Side by Side Diff: components/policy/core/common/cloud/device_management_service_unittest.cc

Issue 1239993004: Fix all failed and canceled URLRequestStatuses without errors. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix more failures Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <ostream> 5 #include <ostream>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 request->set_modulus(1); 143 request->set_modulus(1);
144 request->set_remainder(0); 144 request->set_remainder(0);
145 job->SetRetryCallback(base::Bind( 145 job->SetRetryCallback(base::Bind(
146 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this))); 146 &DeviceManagementServiceTestBase::OnJobRetry, base::Unretained(this)));
147 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, 147 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone,
148 base::Unretained(this))); 148 base::Unretained(this)));
149 return job; 149 return job;
150 } 150 }
151 151
152 void SendResponse(net::TestURLFetcher* fetcher, 152 void SendResponse(net::TestURLFetcher* fetcher,
153 const net::URLRequestStatus request_status, 153 net::Error error,
154 int http_status, 154 int http_status,
155 const std::string& response) { 155 const std::string& response) {
156 fetcher->set_url(GURL(kServiceUrl)); 156 fetcher->set_url(GURL(kServiceUrl));
157 fetcher->set_status(request_status); 157 fetcher->set_status(net::URLRequestStatus::FromError(error));
158 fetcher->set_response_code(http_status); 158 fetcher->set_response_code(http_status);
159 fetcher->SetResponseString(response); 159 fetcher->SetResponseString(response);
160 fetcher->delegate()->OnURLFetchComplete(fetcher); 160 fetcher->delegate()->OnURLFetchComplete(fetcher);
161 } 161 }
162 162
163 MOCK_METHOD3(OnJobDone, void(DeviceManagementStatus, int, 163 MOCK_METHOD3(OnJobDone, void(DeviceManagementStatus, int,
164 const em::DeviceManagementResponse&)); 164 const em::DeviceManagementResponse&));
165 165
166 MOCK_METHOD1(OnJobRetry, void(DeviceManagementRequestJob*)); 166 MOCK_METHOD1(OnJobRetry, void(DeviceManagementRequestJob*));
167 167
168 base::MessageLoop loop_; 168 base::MessageLoop loop_;
169 scoped_refptr<net::TestURLRequestContextGetter> request_context_; 169 scoped_refptr<net::TestURLRequestContextGetter> request_context_;
170 net::TestURLFetcherFactory factory_; 170 net::TestURLFetcherFactory factory_;
171 scoped_ptr<DeviceManagementService> service_; 171 scoped_ptr<DeviceManagementService> service_;
172 }; 172 };
173 173
174 struct FailedRequestParams { 174 struct FailedRequestParams {
175 FailedRequestParams(DeviceManagementStatus expected_status, 175 FailedRequestParams(DeviceManagementStatus expected_status,
176 net::URLRequestStatus::Status request_status, 176 net::Error error,
177 int http_status, 177 int http_status,
178 const std::string& response) 178 const std::string& response)
179 : expected_status_(expected_status), 179 : expected_status_(expected_status),
180 request_status_(request_status, 0), 180 error_(error),
181 http_status_(http_status), 181 http_status_(http_status),
182 response_(response) {} 182 response_(response) {}
183 183
184 DeviceManagementStatus expected_status_; 184 DeviceManagementStatus expected_status_;
185 net::URLRequestStatus request_status_; 185 net::Error error_;
186 int http_status_; 186 int http_status_;
187 std::string response_; 187 std::string response_;
188 }; 188 };
189 189
190 void PrintTo(const FailedRequestParams& params, std::ostream* os) { 190 void PrintTo(const FailedRequestParams& params, std::ostream* os) {
191 *os << "FailedRequestParams " << params.expected_status_ 191 *os << "FailedRequestParams " << params.expected_status_
192 << " " << params.request_status_.status() 192 << " " << params.error_
193 << " " << params.http_status_; 193 << " " << params.http_status_;
194 } 194 }
195 195
196 // A parameterized test case for erroneous response situations, they're mostly 196 // A parameterized test case for erroneous response situations, they're mostly
197 // the same for all kinds of requests. 197 // the same for all kinds of requests.
198 class DeviceManagementServiceFailedRequestTest 198 class DeviceManagementServiceFailedRequestTest
199 : public DeviceManagementServiceTestBase, 199 : public DeviceManagementServiceTestBase,
200 public testing::WithParamInterface<FailedRequestParams> { 200 public testing::WithParamInterface<FailedRequestParams> {
201 }; 201 };
202 202
203 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { 203 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) {
204 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _)); 204 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _));
205 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 205 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
206 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); 206 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
207 net::TestURLFetcher* fetcher = GetFetcher(); 207 net::TestURLFetcher* fetcher = GetFetcher();
208 ASSERT_TRUE(fetcher); 208 ASSERT_TRUE(fetcher);
209 209
210 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, 210 SendResponse(fetcher, GetParam().error_, GetParam().http_status_,
211 GetParam().response_); 211 GetParam().response_);
212 } 212 }
213 213
214 TEST_P(DeviceManagementServiceFailedRequestTest, ApiAuthCodeFetchRequest) { 214 TEST_P(DeviceManagementServiceFailedRequestTest, ApiAuthCodeFetchRequest) {
215 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _)); 215 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _));
216 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 216 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
217 scoped_ptr<DeviceManagementRequestJob> request_job( 217 scoped_ptr<DeviceManagementRequestJob> request_job(
218 StartApiAuthCodeFetchJob()); 218 StartApiAuthCodeFetchJob());
219 net::TestURLFetcher* fetcher = GetFetcher(); 219 net::TestURLFetcher* fetcher = GetFetcher();
220 ASSERT_TRUE(fetcher); 220 ASSERT_TRUE(fetcher);
221 221
222 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, 222 SendResponse(fetcher, GetParam().error_, GetParam().http_status_,
223 GetParam().response_); 223 GetParam().response_);
224 } 224 }
225 225
226 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { 226 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) {
227 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _)); 227 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _));
228 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 228 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
229 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); 229 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
230 net::TestURLFetcher* fetcher = GetFetcher(); 230 net::TestURLFetcher* fetcher = GetFetcher();
231 ASSERT_TRUE(fetcher); 231 ASSERT_TRUE(fetcher);
232 232
233 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, 233 SendResponse(fetcher, GetParam().error_, GetParam().http_status_,
234 GetParam().response_); 234 GetParam().response_);
235 } 235 }
236 236
237 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { 237 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) {
238 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _)); 238 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _));
239 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 239 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
240 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); 240 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
241 net::TestURLFetcher* fetcher = GetFetcher(); 241 net::TestURLFetcher* fetcher = GetFetcher();
242 ASSERT_TRUE(fetcher); 242 ASSERT_TRUE(fetcher);
243 243
244 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, 244 SendResponse(fetcher, GetParam().error_, GetParam().http_status_,
245 GetParam().response_); 245 GetParam().response_);
246 } 246 }
247 247
248 TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) { 248 TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) {
249 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _)); 249 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _, _));
250 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 250 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
251 scoped_ptr<DeviceManagementRequestJob> request_job(StartAutoEnrollmentJob()); 251 scoped_ptr<DeviceManagementRequestJob> request_job(StartAutoEnrollmentJob());
252 net::TestURLFetcher* fetcher = GetFetcher(); 252 net::TestURLFetcher* fetcher = GetFetcher();
253 ASSERT_TRUE(fetcher); 253 ASSERT_TRUE(fetcher);
254 254
255 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, 255 SendResponse(fetcher, GetParam().error_, GetParam().http_status_,
256 GetParam().response_); 256 GetParam().response_);
257 } 257 }
258 258
259 INSTANTIATE_TEST_CASE_P( 259 INSTANTIATE_TEST_CASE_P(
260 DeviceManagementServiceFailedRequestTestInstance, 260 DeviceManagementServiceFailedRequestTestInstance,
261 DeviceManagementServiceFailedRequestTest, 261 DeviceManagementServiceFailedRequestTest,
262 testing::Values( 262 testing::Values(
263 FailedRequestParams( 263 FailedRequestParams(
264 DM_STATUS_REQUEST_FAILED, 264 DM_STATUS_REQUEST_FAILED,
265 net::URLRequestStatus::FAILED, 265 net::ERR_FAILED,
266 200, 266 200,
267 PROTO_STRING(kResponseEmpty)), 267 PROTO_STRING(kResponseEmpty)),
268 FailedRequestParams( 268 FailedRequestParams(
269 DM_STATUS_HTTP_STATUS_ERROR, 269 DM_STATUS_HTTP_STATUS_ERROR,
270 net::URLRequestStatus::SUCCESS, 270 net::OK,
271 666, 271 666,
272 PROTO_STRING(kResponseEmpty)), 272 PROTO_STRING(kResponseEmpty)),
273 FailedRequestParams( 273 FailedRequestParams(
274 DM_STATUS_RESPONSE_DECODING_ERROR, 274 DM_STATUS_RESPONSE_DECODING_ERROR,
275 net::URLRequestStatus::SUCCESS, 275 net::OK,
276 200, 276 200,
277 PROTO_STRING("Not a protobuf.")), 277 PROTO_STRING("Not a protobuf.")),
278 FailedRequestParams( 278 FailedRequestParams(
279 DM_STATUS_SERVICE_MANAGEMENT_NOT_SUPPORTED, 279 DM_STATUS_SERVICE_MANAGEMENT_NOT_SUPPORTED,
280 net::URLRequestStatus::SUCCESS, 280 net::OK,
281 403, 281 403,
282 PROTO_STRING(kResponseEmpty)), 282 PROTO_STRING(kResponseEmpty)),
283 FailedRequestParams( 283 FailedRequestParams(
284 DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER, 284 DM_STATUS_SERVICE_INVALID_SERIAL_NUMBER,
285 net::URLRequestStatus::SUCCESS, 285 net::OK,
286 405, 286 405,
287 PROTO_STRING(kResponseEmpty)), 287 PROTO_STRING(kResponseEmpty)),
288 FailedRequestParams( 288 FailedRequestParams(
289 DM_STATUS_SERVICE_DEVICE_ID_CONFLICT, 289 DM_STATUS_SERVICE_DEVICE_ID_CONFLICT,
290 net::URLRequestStatus::SUCCESS, 290 net::OK,
291 409, 291 409,
292 PROTO_STRING(kResponseEmpty)), 292 PROTO_STRING(kResponseEmpty)),
293 FailedRequestParams( 293 FailedRequestParams(
294 DM_STATUS_SERVICE_DEVICE_NOT_FOUND, 294 DM_STATUS_SERVICE_DEVICE_NOT_FOUND,
295 net::URLRequestStatus::SUCCESS, 295 net::OK,
296 410, 296 410,
297 PROTO_STRING(kResponseEmpty)), 297 PROTO_STRING(kResponseEmpty)),
298 FailedRequestParams( 298 FailedRequestParams(
299 DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID, 299 DM_STATUS_SERVICE_MANAGEMENT_TOKEN_INVALID,
300 net::URLRequestStatus::SUCCESS, 300 net::OK,
301 401, 301 401,
302 PROTO_STRING(kResponseEmpty)), 302 PROTO_STRING(kResponseEmpty)),
303 FailedRequestParams( 303 FailedRequestParams(
304 DM_STATUS_REQUEST_INVALID, 304 DM_STATUS_REQUEST_INVALID,
305 net::URLRequestStatus::SUCCESS, 305 net::OK,
306 400, 306 400,
307 PROTO_STRING(kResponseEmpty)), 307 PROTO_STRING(kResponseEmpty)),
308 FailedRequestParams( 308 FailedRequestParams(
309 DM_STATUS_TEMPORARY_UNAVAILABLE, 309 DM_STATUS_TEMPORARY_UNAVAILABLE,
310 net::URLRequestStatus::SUCCESS, 310 net::OK,
311 404, 311 404,
312 PROTO_STRING(kResponseEmpty)), 312 PROTO_STRING(kResponseEmpty)),
313 FailedRequestParams( 313 FailedRequestParams(
314 DM_STATUS_SERVICE_ACTIVATION_PENDING, 314 DM_STATUS_SERVICE_ACTIVATION_PENDING,
315 net::URLRequestStatus::SUCCESS, 315 net::OK,
316 412, 316 412,
317 PROTO_STRING(kResponseEmpty)), 317 PROTO_STRING(kResponseEmpty)),
318 FailedRequestParams( 318 FailedRequestParams(
319 DM_STATUS_SERVICE_MISSING_LICENSES, 319 DM_STATUS_SERVICE_MISSING_LICENSES,
320 net::URLRequestStatus::SUCCESS, 320 net::OK,
321 402, 321 402,
322 PROTO_STRING(kResponseEmpty)))); 322 PROTO_STRING(kResponseEmpty))));
323 323
324 // Simple query parameter parser for testing. 324 // Simple query parameter parser for testing.
325 class QueryParams { 325 class QueryParams {
326 public: 326 public:
327 explicit QueryParams(const std::string& query) { 327 explicit QueryParams(const std::string& query) {
328 base::SplitStringIntoKeyValuePairs(query, '=', '&', &params_); 328 base::SplitStringIntoKeyValuePairs(query, '=', '&', &params_);
329 } 329 }
330 330
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
406 dm_protocol::kValueRequestRegister, 406 dm_protocol::kValueRequestRegister,
407 kClientID); 407 kClientID);
408 408
409 std::string expected_data; 409 std::string expected_data;
410 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); 410 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
411 EXPECT_EQ(expected_data, fetcher->upload_data()); 411 EXPECT_EQ(expected_data, fetcher->upload_data());
412 412
413 // Generate the response. 413 // Generate the response.
414 std::string response_data; 414 std::string response_data;
415 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); 415 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
416 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 416 SendResponse(fetcher, net::OK, 200, response_data);
417 SendResponse(fetcher, status, 200, response_data);
418 } 417 }
419 418
420 TEST_F(DeviceManagementServiceTest, ApiAuthCodeFetchRequest) { 419 TEST_F(DeviceManagementServiceTest, ApiAuthCodeFetchRequest) {
421 em::DeviceManagementResponse expected_response; 420 em::DeviceManagementResponse expected_response;
422 expected_response.mutable_service_api_access_response()->set_auth_code( 421 expected_response.mutable_service_api_access_response()->set_auth_code(
423 kRobotAuthCode); 422 kRobotAuthCode);
424 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _, 423 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _,
425 MessageEquals(expected_response))); 424 MessageEquals(expected_response)));
426 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 425 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
427 scoped_ptr<DeviceManagementRequestJob> request_job( 426 scoped_ptr<DeviceManagementRequestJob> request_job(
428 StartApiAuthCodeFetchJob()); 427 StartApiAuthCodeFetchJob());
429 net::TestURLFetcher* fetcher = GetFetcher(); 428 net::TestURLFetcher* fetcher = GetFetcher();
430 ASSERT_TRUE(fetcher); 429 ASSERT_TRUE(fetcher);
431 430
432 CheckURLAndQueryParams(fetcher->GetOriginalURL(), 431 CheckURLAndQueryParams(fetcher->GetOriginalURL(),
433 dm_protocol::kValueRequestApiAuthorization, 432 dm_protocol::kValueRequestApiAuthorization,
434 kClientID); 433 kClientID);
435 434
436 std::string expected_data; 435 std::string expected_data;
437 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); 436 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
438 EXPECT_EQ(expected_data, fetcher->upload_data()); 437 EXPECT_EQ(expected_data, fetcher->upload_data());
439 438
440 // Generate the response. 439 // Generate the response.
441 std::string response_data; 440 std::string response_data;
442 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); 441 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
443 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 442 SendResponse(fetcher, net::OK, 200, response_data);
444 SendResponse(fetcher, status, 200, response_data);
445 } 443 }
446 444
447 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { 445 TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
448 em::DeviceManagementResponse expected_response; 446 em::DeviceManagementResponse expected_response;
449 expected_response.mutable_unregister_response(); 447 expected_response.mutable_unregister_response();
450 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _, 448 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, _,
451 MessageEquals(expected_response))); 449 MessageEquals(expected_response)));
452 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 450 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
453 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); 451 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob());
454 net::TestURLFetcher* fetcher = GetFetcher(); 452 net::TestURLFetcher* fetcher = GetFetcher();
(...skipping 11 matching lines...) Expand all
466 dm_protocol::kValueRequestUnregister, 464 dm_protocol::kValueRequestUnregister,
467 kClientID); 465 kClientID);
468 466
469 std::string expected_data; 467 std::string expected_data;
470 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); 468 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
471 EXPECT_EQ(expected_data, fetcher->upload_data()); 469 EXPECT_EQ(expected_data, fetcher->upload_data());
472 470
473 // Generate the response. 471 // Generate the response.
474 std::string response_data; 472 std::string response_data;
475 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); 473 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
476 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 474 SendResponse(fetcher, net::OK, 200, response_data);
477 SendResponse(fetcher, status, 200, response_data);
478 } 475 }
479 476
480 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { 477 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) {
481 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0); 478 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0);
482 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 479 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
483 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); 480 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
484 net::TestURLFetcher* fetcher = GetFetcher(); 481 net::TestURLFetcher* fetcher = GetFetcher();
485 ASSERT_TRUE(fetcher); 482 ASSERT_TRUE(fetcher);
486 483
487 // There shouldn't be any callbacks. 484 // There shouldn't be any callbacks.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 537
541 // Now initialize the service. That should start the job. 538 // Now initialize the service. That should start the job.
542 InitializeService(); 539 InitializeService();
543 fetcher = GetFetcher(); 540 fetcher = GetFetcher();
544 ASSERT_TRUE(fetcher); 541 ASSERT_TRUE(fetcher);
545 factory_.RemoveFetcherFromMap(DeviceManagementService::kURLFetcherID); 542 factory_.RemoveFetcherFromMap(DeviceManagementService::kURLFetcherID);
546 543
547 // Check that the request is processed as expected. 544 // Check that the request is processed as expected.
548 std::string response_data; 545 std::string response_data;
549 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); 546 ASSERT_TRUE(expected_response.SerializeToString(&response_data));
550 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 547 SendResponse(fetcher, net::OK, 200, response_data);
551 SendResponse(fetcher, status, 200, response_data);
552 } 548 }
553 549
554 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) { 550 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) {
555 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0); 551 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0);
556 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 552 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
557 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); 553 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob());
558 net::TestURLFetcher* fetcher = GetFetcher(); 554 net::TestURLFetcher* fetcher = GetFetcher();
559 ASSERT_TRUE(fetcher); 555 ASSERT_TRUE(fetcher);
560 556
561 // Shutdown the service and cancel the job afterwards. 557 // Shutdown the service and cancel the job afterwards.
562 service_->Shutdown(); 558 service_->Shutdown();
563 request_job.reset(); 559 request_job.reset();
564 } 560 }
565 561
566 ACTION_P(ResetPointer, pointer) { 562 ACTION_P(ResetPointer, pointer) {
567 pointer->reset(); 563 pointer->reset();
568 } 564 }
569 565
570 TEST_F(DeviceManagementServiceTest, CancelDuringCallback) { 566 TEST_F(DeviceManagementServiceTest, CancelDuringCallback) {
571 // Make a request. 567 // Make a request.
572 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); 568 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
573 net::TestURLFetcher* fetcher = GetFetcher(); 569 net::TestURLFetcher* fetcher = GetFetcher();
574 ASSERT_TRUE(fetcher); 570 ASSERT_TRUE(fetcher);
575 571
576 EXPECT_CALL(*this, OnJobDone(_, _, _)) 572 EXPECT_CALL(*this, OnJobDone(_, _, _))
577 .WillOnce(ResetPointer(&request_job)); 573 .WillOnce(ResetPointer(&request_job));
578 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 574 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
579 575
580 // Generate a callback. 576 // Generate a callback.
581 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); 577 SendResponse(fetcher, net::OK, 500, std::string());
582 SendResponse(fetcher, status, 500, std::string());
583 578
584 // Job should have been reset. 579 // Job should have been reset.
585 EXPECT_FALSE(request_job.get()); 580 EXPECT_FALSE(request_job.get());
586 } 581 }
587 582
588 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) { 583 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
589 // Make a request. 584 // Make a request.
590 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0); 585 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0);
591 EXPECT_CALL(*this, OnJobRetry(_)); 586 EXPECT_CALL(*this, OnJobRetry(_));
592 587
593 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); 588 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
594 net::TestURLFetcher* fetcher = GetFetcher(); 589 net::TestURLFetcher* fetcher = GetFetcher();
595 ASSERT_TRUE(fetcher); 590 ASSERT_TRUE(fetcher);
596 EXPECT_EQ(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); 591 EXPECT_EQ(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
597 const GURL original_url(fetcher->GetOriginalURL()); 592 const GURL original_url(fetcher->GetOriginalURL());
598 const std::string upload_data(fetcher->upload_data()); 593 const std::string upload_data(fetcher->upload_data());
599 594
600 // Generate a callback with a proxy failure. 595 // Generate a callback with a proxy failure.
601 net::URLRequestStatus status(net::URLRequestStatus::FAILED, 596 SendResponse(fetcher, net::ERR_PROXY_CONNECTION_FAILED, 200, std::string());
602 net::ERR_PROXY_CONNECTION_FAILED);
603 SendResponse(fetcher, status, 200, std::string());
604 597
605 // Verify that a new URLFetcher was started that bypasses the proxy. 598 // Verify that a new URLFetcher was started that bypasses the proxy.
606 fetcher = GetFetcher(); 599 fetcher = GetFetcher();
607 ASSERT_TRUE(fetcher); 600 ASSERT_TRUE(fetcher);
608 EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); 601 EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
609 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); 602 EXPECT_EQ(original_url, fetcher->GetOriginalURL());
610 EXPECT_EQ(upload_data, fetcher->upload_data()); 603 EXPECT_EQ(upload_data, fetcher->upload_data());
611 } 604 }
612 605
613 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) { 606 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) {
614 // Make a request. 607 // Make a request.
615 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0); 608 EXPECT_CALL(*this, OnJobDone(_, _, _)).Times(0);
616 EXPECT_CALL(*this, OnJobRetry(_)); 609 EXPECT_CALL(*this, OnJobRetry(_));
617 610
618 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); 611 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob());
619 net::TestURLFetcher* fetcher = GetFetcher(); 612 net::TestURLFetcher* fetcher = GetFetcher();
620 ASSERT_TRUE(fetcher); 613 ASSERT_TRUE(fetcher);
621 EXPECT_EQ(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); 614 EXPECT_EQ(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
622 const GURL original_url(fetcher->GetOriginalURL()); 615 const GURL original_url(fetcher->GetOriginalURL());
623 const std::string upload_data(fetcher->upload_data()); 616 const std::string upload_data(fetcher->upload_data());
624 fetcher->set_was_fetched_via_proxy(true); 617 fetcher->set_was_fetched_via_proxy(true);
625 scoped_refptr<net::HttpResponseHeaders> headers; 618 scoped_refptr<net::HttpResponseHeaders> headers;
626 headers = new net::HttpResponseHeaders( 619 headers = new net::HttpResponseHeaders(
627 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0"); 620 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0");
628 fetcher->set_response_headers(headers); 621 fetcher->set_response_headers(headers);
629 622
630 // Generate a callback with a valid http response, that was generated by 623 // Generate a callback with a valid http response, that was generated by
631 // a bad/wrong proxy. 624 // a bad/wrong proxy.
632 net::URLRequestStatus status; 625 SendResponse(fetcher, net::OK, 200, std::string());
633 SendResponse(fetcher, status, 200, std::string());
634 626
635 // Verify that a new URLFetcher was started that bypasses the proxy. 627 // Verify that a new URLFetcher was started that bypasses the proxy.
636 fetcher = GetFetcher(); 628 fetcher = GetFetcher();
637 ASSERT_TRUE(fetcher); 629 ASSERT_TRUE(fetcher);
638 EXPECT_NE(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); 630 EXPECT_NE(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
639 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); 631 EXPECT_EQ(original_url, fetcher->GetOriginalURL());
640 EXPECT_EQ(upload_data, fetcher->upload_data()); 632 EXPECT_EQ(upload_data, fetcher->upload_data());
641 } 633 }
642 634
643 TEST_F(DeviceManagementServiceTest, RetryOnNetworkChanges) { 635 TEST_F(DeviceManagementServiceTest, RetryOnNetworkChanges) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 EXPECT_CALL(*this, OnJobDone(DM_STATUS_REQUEST_FAILED, _, _)); 683 EXPECT_CALL(*this, OnJobDone(DM_STATUS_REQUEST_FAILED, _, _));
692 EXPECT_CALL(*this, OnJobRetry(_)).Times(0); 684 EXPECT_CALL(*this, OnJobRetry(_)).Times(0);
693 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED, 685 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED,
694 net::ERR_NETWORK_CHANGED)); 686 net::ERR_NETWORK_CHANGED));
695 fetcher->set_url(GURL(kServiceUrl)); 687 fetcher->set_url(GURL(kServiceUrl));
696 fetcher->delegate()->OnURLFetchComplete(fetcher); 688 fetcher->delegate()->OnURLFetchComplete(fetcher);
697 Mock::VerifyAndClearExpectations(this); 689 Mock::VerifyAndClearExpectations(this);
698 } 690 }
699 691
700 } // namespace policy 692 } // namespace policy
OLDNEW
« no previous file with comments | « components/domain_reliability/monitor_unittest.cc ('k') | components/policy/core/common/cloud/user_info_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698