| 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/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 Loading... |
| 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, '=', '&', ¶ms_); | 328 base::SplitStringIntoKeyValuePairs(query, '=', '&', ¶ms_); |
| 329 } | 329 } |
| 330 | 330 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |