OLD | NEW |
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/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/string_split.h" | 10 #include "base/string_split.h" |
11 #include "chrome/browser/policy/cloud_policy_constants.h" | 11 #include "chrome/browser/policy/cloud_policy_constants.h" |
12 #include "chrome/browser/policy/device_management_service.h" | 12 #include "chrome/browser/policy/device_management_service.h" |
13 #include "chrome/test/base/testing_browser_process.h" | 13 #include "chrome/test/base/testing_browser_process.h" |
14 #include "content/public/test/test_browser_thread.h" | 14 #include "content/public/test/test_browser_thread.h" |
15 #include "content/public/test/test_url_fetcher_factory.h" | |
16 #include "net/base/escape.h" | 15 #include "net/base/escape.h" |
17 #include "net/base/load_flags.h" | 16 #include "net/base/load_flags.h" |
18 #include "net/base/net_errors.h" | 17 #include "net/base/net_errors.h" |
19 #include "net/http/http_response_headers.h" | 18 #include "net/http/http_response_headers.h" |
| 19 #include "net/url_request/test_url_fetcher_factory.h" |
20 #include "net/url_request/url_request_status.h" | 20 #include "net/url_request/url_request_status.h" |
21 #include "net/url_request/url_request_test_util.h" | 21 #include "net/url_request/url_request_test_util.h" |
22 #include "testing/gmock/include/gmock/gmock.h" | 22 #include "testing/gmock/include/gmock/gmock.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
24 | 24 |
25 using content::BrowserThread; | 25 using content::BrowserThread; |
26 using testing::_; | 26 using testing::_; |
27 | 27 |
28 namespace em = enterprise_management; | 28 namespace em = enterprise_management; |
29 | 29 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 job->SetClientID(kClientID); | 111 job->SetClientID(kClientID); |
112 em::DeviceAutoEnrollmentRequest* request = | 112 em::DeviceAutoEnrollmentRequest* request = |
113 job->GetRequest()->mutable_auto_enrollment_request(); | 113 job->GetRequest()->mutable_auto_enrollment_request(); |
114 request->set_modulus(1); | 114 request->set_modulus(1); |
115 request->set_remainder(0); | 115 request->set_remainder(0); |
116 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, | 116 job->Start(base::Bind(&DeviceManagementServiceTestBase::OnJobDone, |
117 base::Unretained(this))); | 117 base::Unretained(this))); |
118 return job; | 118 return job; |
119 } | 119 } |
120 | 120 |
121 void SendResponse(TestURLFetcher* fetcher, | 121 void SendResponse(net::TestURLFetcher* fetcher, |
122 const net::URLRequestStatus request_status, | 122 const net::URLRequestStatus request_status, |
123 int http_status, | 123 int http_status, |
124 const std::string& response) { | 124 const std::string& response) { |
125 fetcher->set_url(GURL(kServiceUrl)); | 125 fetcher->set_url(GURL(kServiceUrl)); |
126 fetcher->set_status(request_status); | 126 fetcher->set_status(request_status); |
127 fetcher->set_response_code(http_status); | 127 fetcher->set_response_code(http_status); |
128 fetcher->SetResponseString(response); | 128 fetcher->SetResponseString(response); |
129 fetcher->delegate()->OnURLFetchComplete(fetcher); | 129 fetcher->delegate()->OnURLFetchComplete(fetcher); |
130 } | 130 } |
131 | 131 |
132 MOCK_METHOD2(OnJobDone, void(DeviceManagementStatus, | 132 MOCK_METHOD2(OnJobDone, void(DeviceManagementStatus, |
133 const em::DeviceManagementResponse&)); | 133 const em::DeviceManagementResponse&)); |
134 | 134 |
135 TestURLFetcherFactory factory_; | 135 net::TestURLFetcherFactory factory_; |
136 scoped_ptr<DeviceManagementService> service_; | 136 scoped_ptr<DeviceManagementService> service_; |
137 | 137 |
138 private: | 138 private: |
139 MessageLoopForUI loop_; | 139 MessageLoopForUI loop_; |
140 content::TestBrowserThread ui_thread_; | 140 content::TestBrowserThread ui_thread_; |
141 content::TestBrowserThread io_thread_; | 141 content::TestBrowserThread io_thread_; |
142 }; | 142 }; |
143 | 143 |
144 struct FailedRequestParams { | 144 struct FailedRequestParams { |
145 FailedRequestParams(DeviceManagementStatus expected_status, | 145 FailedRequestParams(DeviceManagementStatus expected_status, |
(...skipping 20 matching lines...) Expand all Loading... |
166 // A parameterized test case for erroneous response situations, they're mostly | 166 // A parameterized test case for erroneous response situations, they're mostly |
167 // the same for all kinds of requests. | 167 // the same for all kinds of requests. |
168 class DeviceManagementServiceFailedRequestTest | 168 class DeviceManagementServiceFailedRequestTest |
169 : public DeviceManagementServiceTestBase, | 169 : public DeviceManagementServiceTestBase, |
170 public testing::WithParamInterface<FailedRequestParams> { | 170 public testing::WithParamInterface<FailedRequestParams> { |
171 }; | 171 }; |
172 | 172 |
173 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { | 173 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { |
174 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); | 174 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
175 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 175 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
176 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 176 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
177 ASSERT_TRUE(fetcher); | 177 ASSERT_TRUE(fetcher); |
178 | 178 |
179 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, | 179 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
180 GetParam().response_); | 180 GetParam().response_); |
181 } | 181 } |
182 | 182 |
183 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { | 183 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { |
184 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); | 184 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
185 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); | 185 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); |
186 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 186 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
187 ASSERT_TRUE(fetcher); | 187 ASSERT_TRUE(fetcher); |
188 | 188 |
189 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, | 189 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
190 GetParam().response_); | 190 GetParam().response_); |
191 } | 191 } |
192 | 192 |
193 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { | 193 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { |
194 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); | 194 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
195 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); | 195 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); |
196 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 196 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
197 ASSERT_TRUE(fetcher); | 197 ASSERT_TRUE(fetcher); |
198 | 198 |
199 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, | 199 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
200 GetParam().response_); | 200 GetParam().response_); |
201 } | 201 } |
202 | 202 |
203 TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) { | 203 TEST_P(DeviceManagementServiceFailedRequestTest, AutoEnrollmentRequest) { |
204 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); | 204 EXPECT_CALL(*this, OnJobDone(GetParam().expected_status_, _)); |
205 scoped_ptr<DeviceManagementRequestJob> request_job(StartAutoEnrollmentJob()); | 205 scoped_ptr<DeviceManagementRequestJob> request_job(StartAutoEnrollmentJob()); |
206 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 206 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
207 ASSERT_TRUE(fetcher); | 207 ASSERT_TRUE(fetcher); |
208 | 208 |
209 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, | 209 SendResponse(fetcher, GetParam().request_status_, GetParam().http_status_, |
210 GetParam().response_); | 210 GetParam().response_); |
211 } | 211 } |
212 | 212 |
213 INSTANTIATE_TEST_CASE_P( | 213 INSTANTIATE_TEST_CASE_P( |
214 DeviceManagementServiceFailedRequestTestInstance, | 214 DeviceManagementServiceFailedRequestTestInstance, |
215 DeviceManagementServiceFailedRequestTest, | 215 DeviceManagementServiceFailedRequestTest, |
216 testing::Values( | 216 testing::Values( |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 arg_data == reference_data; | 352 arg_data == reference_data; |
353 } | 353 } |
354 | 354 |
355 TEST_F(DeviceManagementServiceTest, RegisterRequest) { | 355 TEST_F(DeviceManagementServiceTest, RegisterRequest) { |
356 em::DeviceManagementResponse expected_response; | 356 em::DeviceManagementResponse expected_response; |
357 expected_response.mutable_register_response()-> | 357 expected_response.mutable_register_response()-> |
358 set_device_management_token(kDMToken); | 358 set_device_management_token(kDMToken); |
359 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, | 359 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, |
360 MessageEquals(expected_response))); | 360 MessageEquals(expected_response))); |
361 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 361 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
362 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 362 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
363 ASSERT_TRUE(fetcher); | 363 ASSERT_TRUE(fetcher); |
364 | 364 |
365 CheckURLAndQueryParams(fetcher->GetOriginalURL(), | 365 CheckURLAndQueryParams(fetcher->GetOriginalURL(), |
366 dm_protocol::kValueRequestRegister, | 366 dm_protocol::kValueRequestRegister, |
367 kClientID); | 367 kClientID); |
368 | 368 |
369 std::string expected_data; | 369 std::string expected_data; |
370 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); | 370 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); |
371 EXPECT_EQ(expected_data, fetcher->upload_data()); | 371 EXPECT_EQ(expected_data, fetcher->upload_data()); |
372 | 372 |
373 // Generate the response. | 373 // Generate the response. |
374 std::string response_data; | 374 std::string response_data; |
375 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); | 375 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); |
376 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 376 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
377 SendResponse(fetcher, status, 200, response_data); | 377 SendResponse(fetcher, status, 200, response_data); |
378 } | 378 } |
379 | 379 |
380 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { | 380 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { |
381 em::DeviceManagementResponse expected_response; | 381 em::DeviceManagementResponse expected_response; |
382 expected_response.mutable_unregister_response(); | 382 expected_response.mutable_unregister_response(); |
383 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, | 383 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, |
384 MessageEquals(expected_response))); | 384 MessageEquals(expected_response))); |
385 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); | 385 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); |
386 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 386 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
387 ASSERT_TRUE(fetcher); | 387 ASSERT_TRUE(fetcher); |
388 | 388 |
389 // Check the data the fetcher received. | 389 // Check the data the fetcher received. |
390 const GURL& request_url(fetcher->GetOriginalURL()); | 390 const GURL& request_url(fetcher->GetOriginalURL()); |
391 const GURL service_url(kServiceUrl); | 391 const GURL service_url(kServiceUrl); |
392 EXPECT_EQ(service_url.scheme(), request_url.scheme()); | 392 EXPECT_EQ(service_url.scheme(), request_url.scheme()); |
393 EXPECT_EQ(service_url.host(), request_url.host()); | 393 EXPECT_EQ(service_url.host(), request_url.host()); |
394 EXPECT_EQ(service_url.port(), request_url.port()); | 394 EXPECT_EQ(service_url.port(), request_url.port()); |
395 EXPECT_EQ(service_url.path(), request_url.path()); | 395 EXPECT_EQ(service_url.path(), request_url.path()); |
396 | 396 |
397 CheckURLAndQueryParams(fetcher->GetOriginalURL(), | 397 CheckURLAndQueryParams(fetcher->GetOriginalURL(), |
398 dm_protocol::kValueRequestUnregister, | 398 dm_protocol::kValueRequestUnregister, |
399 kClientID); | 399 kClientID); |
400 | 400 |
401 std::string expected_data; | 401 std::string expected_data; |
402 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); | 402 ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data)); |
403 EXPECT_EQ(expected_data, fetcher->upload_data()); | 403 EXPECT_EQ(expected_data, fetcher->upload_data()); |
404 | 404 |
405 // Generate the response. | 405 // Generate the response. |
406 std::string response_data; | 406 std::string response_data; |
407 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); | 407 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); |
408 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 408 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
409 SendResponse(fetcher, status, 200, response_data); | 409 SendResponse(fetcher, status, 200, response_data); |
410 } | 410 } |
411 | 411 |
412 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { | 412 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { |
413 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 413 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
414 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 414 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
415 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 415 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
416 ASSERT_TRUE(fetcher); | 416 ASSERT_TRUE(fetcher); |
417 | 417 |
418 // There shouldn't be any callbacks. | 418 // There shouldn't be any callbacks. |
419 request_job.reset(); | 419 request_job.reset(); |
420 } | 420 } |
421 | 421 |
422 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { | 422 TEST_F(DeviceManagementServiceTest, CancelUnregisterRequest) { |
423 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 423 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
424 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); | 424 scoped_ptr<DeviceManagementRequestJob> request_job(StartUnregistrationJob()); |
425 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 425 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
426 ASSERT_TRUE(fetcher); | 426 ASSERT_TRUE(fetcher); |
427 | 427 |
428 // There shouldn't be any callbacks. | 428 // There shouldn't be any callbacks. |
429 request_job.reset(); | 429 request_job.reset(); |
430 } | 430 } |
431 | 431 |
432 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) { | 432 TEST_F(DeviceManagementServiceTest, CancelPolicyRequest) { |
433 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 433 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
434 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); | 434 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); |
435 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 435 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
436 ASSERT_TRUE(fetcher); | 436 ASSERT_TRUE(fetcher); |
437 | 437 |
438 // There shouldn't be any callbacks. | 438 // There shouldn't be any callbacks. |
439 request_job.reset(); | 439 request_job.reset(); |
440 } | 440 } |
441 | 441 |
442 TEST_F(DeviceManagementServiceTest, JobQueueing) { | 442 TEST_F(DeviceManagementServiceTest, JobQueueing) { |
443 // Start with a non-initialized service. | 443 // Start with a non-initialized service. |
444 ResetService(); | 444 ResetService(); |
445 | 445 |
446 em::DeviceManagementResponse expected_response; | 446 em::DeviceManagementResponse expected_response; |
447 expected_response.mutable_register_response()-> | 447 expected_response.mutable_register_response()-> |
448 set_device_management_token(kDMToken); | 448 set_device_management_token(kDMToken); |
449 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, | 449 EXPECT_CALL(*this, OnJobDone(DM_STATUS_SUCCESS, |
450 MessageEquals(expected_response))); | 450 MessageEquals(expected_response))); |
451 | 451 |
452 // Make a request. We should not see any fetchers being created. | 452 // Make a request. We should not see any fetchers being created. |
453 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 453 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
454 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 454 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
455 ASSERT_FALSE(fetcher); | 455 ASSERT_FALSE(fetcher); |
456 | 456 |
457 // Now initialize the service. That should start the job. | 457 // Now initialize the service. That should start the job. |
458 InitializeService(); | 458 InitializeService(); |
459 fetcher = factory_.GetFetcherByID(0); | 459 fetcher = factory_.GetFetcherByID(0); |
460 ASSERT_TRUE(fetcher); | 460 ASSERT_TRUE(fetcher); |
461 factory_.RemoveFetcherFromMap(0); | 461 factory_.RemoveFetcherFromMap(0); |
462 | 462 |
463 // Check that the request is processed as expected. | 463 // Check that the request is processed as expected. |
464 std::string response_data; | 464 std::string response_data; |
465 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); | 465 ASSERT_TRUE(expected_response.SerializeToString(&response_data)); |
466 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 466 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
467 SendResponse(fetcher, status, 200, response_data); | 467 SendResponse(fetcher, status, 200, response_data); |
468 } | 468 } |
469 | 469 |
470 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) { | 470 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) { |
471 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 471 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
472 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); | 472 scoped_ptr<DeviceManagementRequestJob> request_job(StartPolicyFetchJob()); |
473 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 473 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
474 ASSERT_TRUE(fetcher); | 474 ASSERT_TRUE(fetcher); |
475 | 475 |
476 // Shutdown the service and cancel the job afterwards. | 476 // Shutdown the service and cancel the job afterwards. |
477 service_->Shutdown(); | 477 service_->Shutdown(); |
478 request_job.reset(); | 478 request_job.reset(); |
479 } | 479 } |
480 | 480 |
481 ACTION_P(ResetPointer, pointer) { | 481 ACTION_P(ResetPointer, pointer) { |
482 pointer->reset(); | 482 pointer->reset(); |
483 } | 483 } |
484 | 484 |
485 TEST_F(DeviceManagementServiceTest, CancelDuringCallback) { | 485 TEST_F(DeviceManagementServiceTest, CancelDuringCallback) { |
486 // Make a request. | 486 // Make a request. |
487 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 487 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
488 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 488 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
489 ASSERT_TRUE(fetcher); | 489 ASSERT_TRUE(fetcher); |
490 | 490 |
491 EXPECT_CALL(*this, OnJobDone(_, _)) | 491 EXPECT_CALL(*this, OnJobDone(_, _)) |
492 .WillOnce(ResetPointer(&request_job)); | 492 .WillOnce(ResetPointer(&request_job)); |
493 | 493 |
494 // Generate a callback. | 494 // Generate a callback. |
495 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 495 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
496 SendResponse(fetcher, status, 500, ""); | 496 SendResponse(fetcher, status, 500, ""); |
497 | 497 |
498 // Job should have been reset. | 498 // Job should have been reset. |
499 EXPECT_FALSE(request_job.get()); | 499 EXPECT_FALSE(request_job.get()); |
500 } | 500 } |
501 | 501 |
502 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) { | 502 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) { |
503 // Make a request. | 503 // Make a request. |
504 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 504 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
505 | 505 |
506 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 506 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
507 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 507 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
508 ASSERT_TRUE(fetcher); | 508 ASSERT_TRUE(fetcher); |
509 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0); | 509 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0); |
510 const GURL original_url(fetcher->GetOriginalURL()); | 510 const GURL original_url(fetcher->GetOriginalURL()); |
511 const std::string upload_data(fetcher->upload_data()); | 511 const std::string upload_data(fetcher->upload_data()); |
512 | 512 |
513 // Generate a callback with a proxy failure. | 513 // Generate a callback with a proxy failure. |
514 net::URLRequestStatus status(net::URLRequestStatus::FAILED, | 514 net::URLRequestStatus status(net::URLRequestStatus::FAILED, |
515 net::ERR_PROXY_CONNECTION_FAILED); | 515 net::ERR_PROXY_CONNECTION_FAILED); |
516 SendResponse(fetcher, status, 200, ""); | 516 SendResponse(fetcher, status, 200, ""); |
517 | 517 |
518 // Verify that a new URLFetcher was started that bypasses the proxy. | 518 // Verify that a new URLFetcher was started that bypasses the proxy. |
519 fetcher = factory_.GetFetcherByID(0); | 519 fetcher = factory_.GetFetcherByID(0); |
520 ASSERT_TRUE(fetcher); | 520 ASSERT_TRUE(fetcher); |
521 EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); | 521 EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY); |
522 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); | 522 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); |
523 EXPECT_EQ(upload_data, fetcher->upload_data()); | 523 EXPECT_EQ(upload_data, fetcher->upload_data()); |
524 } | 524 } |
525 | 525 |
526 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) { | 526 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) { |
527 // Make a request. | 527 // Make a request. |
528 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); | 528 EXPECT_CALL(*this, OnJobDone(_, _)).Times(0); |
529 | 529 |
530 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); | 530 scoped_ptr<DeviceManagementRequestJob> request_job(StartRegistrationJob()); |
531 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 531 net::TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
532 ASSERT_TRUE(fetcher); | 532 ASSERT_TRUE(fetcher); |
533 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0); | 533 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) == 0); |
534 const GURL original_url(fetcher->GetOriginalURL()); | 534 const GURL original_url(fetcher->GetOriginalURL()); |
535 const std::string upload_data(fetcher->upload_data()); | 535 const std::string upload_data(fetcher->upload_data()); |
536 fetcher->set_was_fetched_via_proxy(true); | 536 fetcher->set_was_fetched_via_proxy(true); |
537 scoped_refptr<net::HttpResponseHeaders> headers; | 537 scoped_refptr<net::HttpResponseHeaders> headers; |
538 headers = new net::HttpResponseHeaders( | 538 headers = new net::HttpResponseHeaders( |
539 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0"); | 539 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0"); |
540 fetcher->set_response_headers(headers); | 540 fetcher->set_response_headers(headers); |
541 | 541 |
542 // Generate a callback with a valid http response, that was generated by | 542 // Generate a callback with a valid http response, that was generated by |
543 // a bad/wrong proxy. | 543 // a bad/wrong proxy. |
544 net::URLRequestStatus status; | 544 net::URLRequestStatus status; |
545 SendResponse(fetcher, status, 200, ""); | 545 SendResponse(fetcher, status, 200, ""); |
546 | 546 |
547 // Verify that a new URLFetcher was started that bypasses the proxy. | 547 // Verify that a new URLFetcher was started that bypasses the proxy. |
548 fetcher = factory_.GetFetcherByID(0); | 548 fetcher = factory_.GetFetcherByID(0); |
549 ASSERT_TRUE(fetcher); | 549 ASSERT_TRUE(fetcher); |
550 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) != 0); | 550 EXPECT_TRUE((fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY) != 0); |
551 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); | 551 EXPECT_EQ(original_url, fetcher->GetOriginalURL()); |
552 EXPECT_EQ(upload_data, fetcher->upload_data()); | 552 EXPECT_EQ(upload_data, fetcher->upload_data()); |
553 } | 553 } |
554 | 554 |
555 } // namespace policy | 555 } // namespace policy |
OLD | NEW |