| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/message_loop.h" | 8 #include "base/message_loop.h" |
| 9 #include "base/string_split.h" | 9 #include "base/string_split.h" |
| 10 #include "chrome/browser/policy/device_management_backend_impl.h" | 10 #include "chrome/browser/policy/device_management_backend_impl.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 | 114 |
| 115 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { | 115 TEST_P(DeviceManagementServiceFailedRequestTest, RegisterRequest) { |
| 116 DeviceRegisterResponseDelegateMock mock; | 116 DeviceRegisterResponseDelegateMock mock; |
| 117 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); | 117 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); |
| 118 em::DeviceRegisterRequest request; | 118 em::DeviceRegisterRequest request; |
| 119 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, | 119 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, |
| 120 kDeviceId, request, &mock); | 120 kDeviceId, request, &mock); |
| 121 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 121 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 122 ASSERT_TRUE(fetcher); | 122 ASSERT_TRUE(fetcher); |
| 123 | 123 |
| 124 fetcher->delegate()->OnURLFetchComplete(fetcher, | 124 fetcher->set_url(GURL(kServiceUrl)); |
| 125 GURL(kServiceUrl), | 125 fetcher->set_status(GetParam().request_status_); |
| 126 GetParam().request_status_, | 126 fetcher->set_response_code(GetParam().http_status_); |
| 127 GetParam().http_status_, | 127 fetcher->SetResponseString(GetParam().response_); |
| 128 net::ResponseCookies(), | 128 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 129 GetParam().response_); | |
| 130 } | 129 } |
| 131 | 130 |
| 132 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { | 131 TEST_P(DeviceManagementServiceFailedRequestTest, UnregisterRequest) { |
| 133 DeviceUnregisterResponseDelegateMock mock; | 132 DeviceUnregisterResponseDelegateMock mock; |
| 134 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); | 133 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); |
| 135 em::DeviceUnregisterRequest request; | 134 em::DeviceUnregisterRequest request; |
| 136 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); | 135 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); |
| 137 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 136 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 138 ASSERT_TRUE(fetcher); | 137 ASSERT_TRUE(fetcher); |
| 139 | 138 |
| 140 fetcher->delegate()->OnURLFetchComplete(fetcher, | 139 fetcher->set_url(GURL(kServiceUrl)); |
| 141 GURL(kServiceUrl), | 140 fetcher->set_status(GetParam().request_status_); |
| 142 GetParam().request_status_, | 141 fetcher->set_response_code(GetParam().http_status_); |
| 143 GetParam().http_status_, | 142 fetcher->SetResponseString(GetParam().response_); |
| 144 net::ResponseCookies(), | 143 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 145 GetParam().response_); | |
| 146 } | 144 } |
| 147 | 145 |
| 148 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { | 146 TEST_P(DeviceManagementServiceFailedRequestTest, PolicyRequest) { |
| 149 DevicePolicyResponseDelegateMock mock; | 147 DevicePolicyResponseDelegateMock mock; |
| 150 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); | 148 EXPECT_CALL(mock, OnError(GetParam().expected_error_)); |
| 151 em::DevicePolicyRequest request; | 149 em::DevicePolicyRequest request; |
| 152 request.set_policy_scope(kChromePolicyScope); | 150 request.set_policy_scope(kChromePolicyScope); |
| 153 em::DevicePolicySettingRequest* setting_request = | 151 em::DevicePolicySettingRequest* setting_request = |
| 154 request.add_setting_request(); | 152 request.add_setting_request(); |
| 155 setting_request->set_key(kChromeDevicePolicySettingKey); | 153 setting_request->set_key(kChromeDevicePolicySettingKey); |
| 156 backend_->ProcessPolicyRequest(kDMToken, kDeviceId, | 154 backend_->ProcessPolicyRequest(kDMToken, kDeviceId, |
| 157 CloudPolicyDataStore::USER_AFFILIATION_NONE, | 155 CloudPolicyDataStore::USER_AFFILIATION_NONE, |
| 158 request, &mock); | 156 request, &mock); |
| 159 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 157 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 160 ASSERT_TRUE(fetcher); | 158 ASSERT_TRUE(fetcher); |
| 161 | 159 |
| 162 fetcher->delegate()->OnURLFetchComplete(fetcher, | 160 fetcher->set_url(GURL(kServiceUrl)); |
| 163 GURL(kServiceUrl), | 161 fetcher->set_status(GetParam().request_status_); |
| 164 GetParam().request_status_, | 162 fetcher->set_response_code(GetParam().http_status_); |
| 165 GetParam().http_status_, | 163 fetcher->SetResponseString(GetParam().response_); |
| 166 net::ResponseCookies(), | 164 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 167 GetParam().response_); | |
| 168 } | 165 } |
| 169 | 166 |
| 170 INSTANTIATE_TEST_CASE_P( | 167 INSTANTIATE_TEST_CASE_P( |
| 171 DeviceManagementServiceFailedRequestTestInstance, | 168 DeviceManagementServiceFailedRequestTestInstance, |
| 172 DeviceManagementServiceFailedRequestTest, | 169 DeviceManagementServiceFailedRequestTest, |
| 173 testing::Values( | 170 testing::Values( |
| 174 FailedRequestParams( | 171 FailedRequestParams( |
| 175 DeviceManagementBackend::kErrorRequestFailed, | 172 DeviceManagementBackend::kErrorRequestFailed, |
| 176 net::URLRequestStatus::FAILED, | 173 net::URLRequestStatus::FAILED, |
| 177 200, | 174 200, |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 ASSERT_TRUE(expected_request_wrapper.SerializeToString( | 339 ASSERT_TRUE(expected_request_wrapper.SerializeToString( |
| 343 &expected_request_data)); | 340 &expected_request_data)); |
| 344 EXPECT_EQ(expected_request_data, fetcher->upload_data()); | 341 EXPECT_EQ(expected_request_data, fetcher->upload_data()); |
| 345 | 342 |
| 346 // Generate the response. | 343 // Generate the response. |
| 347 std::string response_data; | 344 std::string response_data; |
| 348 em::DeviceManagementResponse response_wrapper; | 345 em::DeviceManagementResponse response_wrapper; |
| 349 response_wrapper.mutable_register_response()->CopyFrom(expected_response); | 346 response_wrapper.mutable_register_response()->CopyFrom(expected_response); |
| 350 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); | 347 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); |
| 351 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 348 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
| 352 fetcher->delegate()->OnURLFetchComplete(fetcher, | 349 fetcher->set_url(GURL(kServiceUrl)); |
| 353 GURL(kServiceUrl), | 350 fetcher->set_status(status); |
| 354 status, | 351 fetcher->set_response_code(200); |
| 355 200, | 352 fetcher->SetResponseString(response_data); |
| 356 net::ResponseCookies(), | 353 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 357 response_data); | |
| 358 } | 354 } |
| 359 | 355 |
| 360 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { | 356 TEST_F(DeviceManagementServiceTest, UnregisterRequest) { |
| 361 DeviceUnregisterResponseDelegateMock mock; | 357 DeviceUnregisterResponseDelegateMock mock; |
| 362 em::DeviceUnregisterResponse expected_response; | 358 em::DeviceUnregisterResponse expected_response; |
| 363 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response))); | 359 EXPECT_CALL(mock, HandleUnregisterResponse(MessageEquals(expected_response))); |
| 364 em::DeviceUnregisterRequest request; | 360 em::DeviceUnregisterRequest request; |
| 365 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); | 361 backend_->ProcessUnregisterRequest(kDMToken, kDeviceId, request, &mock); |
| 366 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 362 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 367 ASSERT_TRUE(fetcher); | 363 ASSERT_TRUE(fetcher); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 384 ASSERT_TRUE(expected_request_wrapper.SerializeToString( | 380 ASSERT_TRUE(expected_request_wrapper.SerializeToString( |
| 385 &expected_request_data)); | 381 &expected_request_data)); |
| 386 EXPECT_EQ(expected_request_data, fetcher->upload_data()); | 382 EXPECT_EQ(expected_request_data, fetcher->upload_data()); |
| 387 | 383 |
| 388 // Generate the response. | 384 // Generate the response. |
| 389 std::string response_data; | 385 std::string response_data; |
| 390 em::DeviceManagementResponse response_wrapper; | 386 em::DeviceManagementResponse response_wrapper; |
| 391 response_wrapper.mutable_unregister_response()->CopyFrom(expected_response); | 387 response_wrapper.mutable_unregister_response()->CopyFrom(expected_response); |
| 392 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); | 388 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); |
| 393 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 389 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
| 394 fetcher->delegate()->OnURLFetchComplete(fetcher, | 390 fetcher->set_url(GURL(kServiceUrl)); |
| 395 GURL(kServiceUrl), | 391 fetcher->set_status(status); |
| 396 status, | 392 fetcher->set_response_code(200); |
| 397 200, | 393 fetcher->SetResponseString(response_data); |
| 398 net::ResponseCookies(), | 394 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 399 response_data); | |
| 400 } | 395 } |
| 401 | 396 |
| 402 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { | 397 TEST_F(DeviceManagementServiceTest, CancelRegisterRequest) { |
| 403 DeviceRegisterResponseDelegateMock mock; | 398 DeviceRegisterResponseDelegateMock mock; |
| 404 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); | 399 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); |
| 405 em::DeviceRegisterRequest request; | 400 em::DeviceRegisterRequest request; |
| 406 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, | 401 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, |
| 407 kDeviceId, request, &mock); | 402 kDeviceId, request, &mock); |
| 408 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 403 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 409 ASSERT_TRUE(fetcher); | 404 ASSERT_TRUE(fetcher); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 fetcher = factory_.GetFetcherByID(0); | 458 fetcher = factory_.GetFetcherByID(0); |
| 464 ASSERT_TRUE(fetcher); | 459 ASSERT_TRUE(fetcher); |
| 465 factory_.RemoveFetcherFromMap(0); | 460 factory_.RemoveFetcherFromMap(0); |
| 466 | 461 |
| 467 // Check that the request is processed as expected. | 462 // Check that the request is processed as expected. |
| 468 std::string response_data; | 463 std::string response_data; |
| 469 em::DeviceManagementResponse response_wrapper; | 464 em::DeviceManagementResponse response_wrapper; |
| 470 response_wrapper.mutable_register_response()->CopyFrom(expected_response); | 465 response_wrapper.mutable_register_response()->CopyFrom(expected_response); |
| 471 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); | 466 ASSERT_TRUE(response_wrapper.SerializeToString(&response_data)); |
| 472 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 467 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
| 473 fetcher->delegate()->OnURLFetchComplete(fetcher, | 468 fetcher->set_url(GURL(kServiceUrl)); |
| 474 GURL(kServiceUrl), | 469 fetcher->set_status(status); |
| 475 status, | 470 fetcher->set_response_code(200); |
| 476 200, | 471 fetcher->SetResponseString(response_data); |
| 477 net::ResponseCookies(), | 472 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 478 response_data); | |
| 479 } | 473 } |
| 480 | 474 |
| 481 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) { | 475 TEST_F(DeviceManagementServiceTest, CancelRequestAfterShutdown) { |
| 482 DevicePolicyResponseDelegateMock mock; | 476 DevicePolicyResponseDelegateMock mock; |
| 483 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0); | 477 EXPECT_CALL(mock, HandlePolicyResponse(_)).Times(0); |
| 484 em::DevicePolicyRequest request; | 478 em::DevicePolicyRequest request; |
| 485 request.set_policy_scope(kChromePolicyScope); | 479 request.set_policy_scope(kChromePolicyScope); |
| 486 em::DevicePolicySettingRequest* setting_request = | 480 em::DevicePolicySettingRequest* setting_request = |
| 487 request.add_setting_request(); | 481 request.add_setting_request(); |
| 488 setting_request->set_key(kChromeDevicePolicySettingKey); | 482 setting_request->set_key(kChromeDevicePolicySettingKey); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 506 &DeviceManagementServiceTest::ResetBackend)) | 500 &DeviceManagementServiceTest::ResetBackend)) |
| 507 .RetiresOnSaturation(); | 501 .RetiresOnSaturation(); |
| 508 em::DeviceRegisterRequest request; | 502 em::DeviceRegisterRequest request; |
| 509 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, | 503 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, |
| 510 kDeviceId, request, &mock); | 504 kDeviceId, request, &mock); |
| 511 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 505 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 512 ASSERT_TRUE(fetcher); | 506 ASSERT_TRUE(fetcher); |
| 513 | 507 |
| 514 // Generate a callback. | 508 // Generate a callback. |
| 515 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); | 509 net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); |
| 516 fetcher->delegate()->OnURLFetchComplete(fetcher, | 510 fetcher->set_url(GURL(kServiceUrl)); |
| 517 GURL(kServiceUrl), | 511 fetcher->set_status(status); |
| 518 status, | 512 fetcher->set_response_code(500); |
| 519 500, | 513 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 520 net::ResponseCookies(), | |
| 521 ""); | |
| 522 | 514 |
| 523 // Backend should have been reset. | 515 // Backend should have been reset. |
| 524 EXPECT_FALSE(backend_.get()); | 516 EXPECT_FALSE(backend_.get()); |
| 525 } | 517 } |
| 526 | 518 |
| 527 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) { | 519 TEST_F(DeviceManagementServiceTest, RetryOnProxyError) { |
| 528 // Make a request. | 520 // Make a request. |
| 529 DeviceRegisterResponseDelegateMock mock; | 521 DeviceRegisterResponseDelegateMock mock; |
| 530 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); | 522 EXPECT_CALL(mock, HandleRegisterResponse(_)).Times(0); |
| 531 EXPECT_CALL(mock, OnError(_)).Times(0); | 523 EXPECT_CALL(mock, OnError(_)).Times(0); |
| 532 | 524 |
| 533 em::DeviceRegisterRequest request; | 525 em::DeviceRegisterRequest request; |
| 534 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, | 526 backend_->ProcessRegisterRequest(kGaiaAuthToken, kOAuthToken, |
| 535 kDeviceId, request, &mock); | 527 kDeviceId, request, &mock); |
| 536 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); | 528 TestURLFetcher* fetcher = factory_.GetFetcherByID(0); |
| 537 ASSERT_TRUE(fetcher); | 529 ASSERT_TRUE(fetcher); |
| 538 EXPECT_TRUE((fetcher->load_flags() & net::LOAD_BYPASS_PROXY) == 0); | 530 EXPECT_TRUE((fetcher->load_flags() & net::LOAD_BYPASS_PROXY) == 0); |
| 539 const GURL original_url(fetcher->original_url()); | 531 const GURL original_url(fetcher->original_url()); |
| 540 const std::string upload_data(fetcher->upload_data()); | 532 const std::string upload_data(fetcher->upload_data()); |
| 541 | 533 |
| 542 // Generate a callback with a proxy failure. | 534 // Generate a callback with a proxy failure. |
| 543 net::URLRequestStatus status(net::URLRequestStatus::FAILED, | 535 net::URLRequestStatus status(net::URLRequestStatus::FAILED, |
| 544 net::ERR_PROXY_CONNECTION_FAILED); | 536 net::ERR_PROXY_CONNECTION_FAILED); |
| 545 fetcher->delegate()->OnURLFetchComplete(fetcher, | 537 fetcher->set_url(GURL(kServiceUrl)); |
| 546 GURL(kServiceUrl), | 538 fetcher->set_status(status); |
| 547 status, | 539 fetcher->set_response_code(200); |
| 548 0, | 540 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 549 net::ResponseCookies(), | |
| 550 ""); | |
| 551 | 541 |
| 552 // Verify that a new URLFetcher was started that bypasses the proxy. | 542 // Verify that a new URLFetcher was started that bypasses the proxy. |
| 553 fetcher = factory_.GetFetcherByID(0); | 543 fetcher = factory_.GetFetcherByID(0); |
| 554 ASSERT_TRUE(fetcher); | 544 ASSERT_TRUE(fetcher); |
| 555 EXPECT_TRUE(fetcher->load_flags() & net::LOAD_BYPASS_PROXY); | 545 EXPECT_TRUE(fetcher->load_flags() & net::LOAD_BYPASS_PROXY); |
| 556 EXPECT_EQ(original_url, fetcher->original_url()); | 546 EXPECT_EQ(original_url, fetcher->original_url()); |
| 557 EXPECT_EQ(upload_data, fetcher->upload_data()); | 547 EXPECT_EQ(upload_data, fetcher->upload_data()); |
| 558 } | 548 } |
| 559 | 549 |
| 560 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) { | 550 TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 573 const std::string upload_data(fetcher->upload_data()); | 563 const std::string upload_data(fetcher->upload_data()); |
| 574 fetcher->set_was_fetched_via_proxy(true); | 564 fetcher->set_was_fetched_via_proxy(true); |
| 575 scoped_refptr<net::HttpResponseHeaders> headers; | 565 scoped_refptr<net::HttpResponseHeaders> headers; |
| 576 headers = new net::HttpResponseHeaders( | 566 headers = new net::HttpResponseHeaders( |
| 577 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0"); | 567 "HTTP/1.1 200 OK\0Content-type: bad/type\0\0"); |
| 578 fetcher->set_response_headers(headers); | 568 fetcher->set_response_headers(headers); |
| 579 | 569 |
| 580 // Generate a callback with a valid http response, that was generated by | 570 // Generate a callback with a valid http response, that was generated by |
| 581 // a bad/wrong proxy. | 571 // a bad/wrong proxy. |
| 582 net::URLRequestStatus status; | 572 net::URLRequestStatus status; |
| 583 fetcher->delegate()->OnURLFetchComplete(fetcher, | 573 fetcher->set_url(GURL(kServiceUrl)); |
| 584 GURL(kServiceUrl), | 574 fetcher->set_status(status); |
| 585 status, | 575 fetcher->set_response_code(200); |
| 586 200, | 576 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 587 net::ResponseCookies(), | |
| 588 ""); | |
| 589 | 577 |
| 590 // Verify that a new URLFetcher was started that bypasses the proxy. | 578 // Verify that a new URLFetcher was started that bypasses the proxy. |
| 591 fetcher = factory_.GetFetcherByID(0); | 579 fetcher = factory_.GetFetcherByID(0); |
| 592 ASSERT_TRUE(fetcher); | 580 ASSERT_TRUE(fetcher); |
| 593 EXPECT_TRUE((fetcher->load_flags() & net::LOAD_BYPASS_PROXY) != 0); | 581 EXPECT_TRUE((fetcher->load_flags() & net::LOAD_BYPASS_PROXY) != 0); |
| 594 EXPECT_EQ(original_url, fetcher->original_url()); | 582 EXPECT_EQ(original_url, fetcher->original_url()); |
| 595 EXPECT_EQ(upload_data, fetcher->upload_data()); | 583 EXPECT_EQ(upload_data, fetcher->upload_data()); |
| 596 } | 584 } |
| 597 | 585 |
| 598 } // namespace policy | 586 } // namespace policy |
| OLD | NEW |