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 |