| Index: components/policy/core/common/cloud/device_management_service_unittest.cc
|
| diff --git a/components/policy/core/common/cloud/device_management_service_unittest.cc b/components/policy/core/common/cloud/device_management_service_unittest.cc
|
| index 075a97832ace857731a64a127b8d36bd95f2b880..5a0bb4e9360f3da7863af118f591980388ac51d0 100644
|
| --- a/components/policy/core/common/cloud/device_management_service_unittest.cc
|
| +++ b/components/policy/core/common/cloud/device_management_service_unittest.cc
|
| @@ -402,7 +402,8 @@ class DeviceManagementServiceTest
|
| protected:
|
| void CheckURLAndQueryParams(const GURL& request_url,
|
| const std::string& request_type,
|
| - const std::string& device_id) {
|
| + const std::string& device_id,
|
| + const std::string& last_error) {
|
| const GURL service_url(kServiceUrl);
|
| EXPECT_EQ(service_url.scheme(), request_url.scheme());
|
| EXPECT_EQ(service_url.host(), request_url.host());
|
| @@ -416,6 +417,12 @@ class DeviceManagementServiceTest
|
| dm_protocol::kValueDeviceType));
|
| EXPECT_TRUE(query_params.Check(dm_protocol::kParamAppType,
|
| dm_protocol::kValueAppType));
|
| + if (last_error == "") {
|
| + EXPECT_TRUE(query_params.Check(dm_protocol::kParamRetry, "false"));
|
| + } else {
|
| + EXPECT_TRUE(query_params.Check(dm_protocol::kParamRetry, "true"));
|
| + EXPECT_TRUE(query_params.Check(dm_protocol::kParamLastError, last_error));
|
| + }
|
| }
|
| };
|
|
|
| @@ -440,8 +447,7 @@ TEST_F(DeviceManagementServiceTest, RegisterRequest) {
|
| ASSERT_TRUE(fetcher);
|
|
|
| CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| - dm_protocol::kValueRequestRegister,
|
| - kClientID);
|
| + dm_protocol::kValueRequestRegister, kClientID, "");
|
|
|
| std::string expected_data;
|
| ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
|
| @@ -466,8 +472,8 @@ TEST_F(DeviceManagementServiceTest, CertBasedRegisterRequest) {
|
| ASSERT_TRUE(fetcher);
|
|
|
| CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| - dm_protocol::kValueRequestCertBasedRegister,
|
| - kClientID);
|
| + dm_protocol::kValueRequestCertBasedRegister, kClientID,
|
| + "");
|
|
|
| std::string expected_data;
|
| ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
|
| @@ -492,8 +498,8 @@ TEST_F(DeviceManagementServiceTest, ApiAuthCodeFetchRequest) {
|
| ASSERT_TRUE(fetcher);
|
|
|
| CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| - dm_protocol::kValueRequestApiAuthorization,
|
| - kClientID);
|
| + dm_protocol::kValueRequestApiAuthorization, kClientID,
|
| + "");
|
|
|
| std::string expected_data;
|
| ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
|
| @@ -525,8 +531,7 @@ TEST_F(DeviceManagementServiceTest, UnregisterRequest) {
|
| EXPECT_EQ(service_url.path(), request_url.path());
|
|
|
| CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| - dm_protocol::kValueRequestUnregister,
|
| - kClientID);
|
| + dm_protocol::kValueRequestUnregister, kClientID, "");
|
|
|
| std::string expected_data;
|
| ASSERT_TRUE(request_job->GetRequest()->SerializeToString(&expected_data));
|
| @@ -672,7 +677,9 @@ TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
|
| net::TestURLFetcher* fetcher = GetFetcher();
|
| ASSERT_TRUE(fetcher);
|
| EXPECT_EQ(0, fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
|
| - const GURL original_url(fetcher->GetOriginalURL());
|
| + // Not a retry.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestRegister, kClientID, "");
|
| const std::string upload_data(fetcher->upload_data());
|
|
|
| // Generate a callback with a proxy failure.
|
| @@ -683,8 +690,11 @@ TEST_F(DeviceManagementServiceTest, RetryOnProxyError) {
|
| fetcher = GetFetcher();
|
| ASSERT_TRUE(fetcher);
|
| EXPECT_TRUE(fetcher->GetLoadFlags() & net::LOAD_BYPASS_PROXY);
|
| - EXPECT_EQ(original_url, fetcher->GetOriginalURL());
|
| EXPECT_EQ(upload_data, fetcher->upload_data());
|
| + // Retry with last error net::ERR_PROXY_CONNECTION_FAILED.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestRegister, kClientID,
|
| + std::to_string(net::ERR_PROXY_CONNECTION_FAILED));
|
| }
|
|
|
| TEST_F(DeviceManagementServiceTest, RetryOnBadResponseFromProxy) {
|
| @@ -727,7 +737,9 @@ TEST_F(DeviceManagementServiceTest, RetryOnNetworkChanges) {
|
| StartRegistrationJob());
|
| net::TestURLFetcher* fetcher = GetFetcher();
|
| ASSERT_TRUE(fetcher);
|
| - const GURL original_url(fetcher->GetOriginalURL());
|
| + // Not a retry.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestRegister, kClientID, "");
|
| const std::string original_upload_data(fetcher->upload_data());
|
|
|
| // Make it fail with ERR_NETWORK_CHANGED.
|
| @@ -742,9 +754,12 @@ TEST_F(DeviceManagementServiceTest, RetryOnNetworkChanges) {
|
| Mock::VerifyAndClearExpectations(this);
|
| fetcher = GetFetcher();
|
| ASSERT_TRUE(fetcher);
|
| - EXPECT_EQ(original_url, fetcher->GetOriginalURL());
|
| EXPECT_EQ(original_upload_data, fetcher->upload_data());
|
| EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
|
| + // Retry with last error net::ERR_NETWORK_CHANGED.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestRegister, kClientID,
|
| + std::to_string(net::ERR_NETWORK_CHANGED));
|
| }
|
|
|
| TEST_F(DeviceManagementServiceTest, PolicyFetchRetryImmediately) {
|
| @@ -759,7 +774,9 @@ TEST_F(DeviceManagementServiceTest, PolicyFetchRetryImmediately) {
|
| StartPolicyFetchJob());
|
| net::TestURLFetcher* fetcher = GetFetcher();
|
| ASSERT_TRUE(fetcher);
|
| - const GURL original_url(fetcher->GetOriginalURL());
|
| + // Not a retry.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestPolicy, kClientID, "");
|
| const std::string original_upload_data(fetcher->upload_data());
|
|
|
| // Make it fail with ERR_NETWORK_CHANGED.
|
| @@ -774,9 +791,12 @@ TEST_F(DeviceManagementServiceTest, PolicyFetchRetryImmediately) {
|
| Mock::VerifyAndClearExpectations(this);
|
| fetcher = GetFetcher();
|
| ASSERT_TRUE(fetcher);
|
| - EXPECT_EQ(original_url, fetcher->GetOriginalURL());
|
| EXPECT_EQ(original_upload_data, fetcher->upload_data());
|
| EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
|
| + // Retry with last error net::ERR_NETWORK_CHANGED.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestPolicy, kClientID,
|
| + std::to_string(net::ERR_NETWORK_CHANGED));
|
| }
|
|
|
| TEST_F(DeviceManagementServiceTest, RetryLimit) {
|
| @@ -793,6 +813,16 @@ TEST_F(DeviceManagementServiceTest, RetryLimit) {
|
| fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::FAILED,
|
| net::ERR_NETWORK_CHANGED));
|
| fetcher->set_url(GURL(kServiceUrl));
|
| + if (i == 0) {
|
| + // Not a retry.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestRegister, kClientID, "");
|
| + } else {
|
| + // Retry with last error net::ERR_NETWORK_CHANGED.
|
| + CheckURLAndQueryParams(fetcher->GetOriginalURL(),
|
| + dm_protocol::kValueRequestRegister, kClientID,
|
| + std::to_string(net::ERR_NETWORK_CHANGED));
|
| + }
|
| fetcher->delegate()->OnURLFetchComplete(fetcher);
|
| base::RunLoop().RunUntilIdle();
|
| Mock::VerifyAndClearExpectations(this);
|
|
|