Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: net/url_request/url_request_ftp_job_unittest.cc

Issue 407093011: Allow URLRequests from one context to have different NetworkDelegates. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix new tests Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 "net/url_request/url_request_ftp_job.h" 5 #include "net/url_request/url_request_ftp_job.h"
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "net/base/host_port_pair.h" 10 #include "net/base/host_port_pair.h"
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 }; 261 };
262 MockRead reads[] = { 262 MockRead reads[] = {
263 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"), 263 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"),
264 MockRead(ASYNC, 2, "Content-Length: 9\r\n\r\n"), 264 MockRead(ASYNC, 2, "Content-Length: 9\r\n\r\n"),
265 MockRead(ASYNC, 3, "test.html"), 265 MockRead(ASYNC, 3, "test.html"),
266 }; 266 };
267 267
268 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 268 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
269 269
270 TestDelegate request_delegate; 270 TestDelegate request_delegate;
271 URLRequest url_request(GURL("ftp://ftp.example.com/"), 271 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
272 DEFAULT_PRIORITY, 272 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY,
273 &request_delegate, 273 &request_delegate, NULL));
274 request_context()); 274 url_request->Start();
275 url_request.Start(); 275 ASSERT_TRUE(url_request->is_pending());
276 ASSERT_TRUE(url_request.is_pending());
277 socket_data(0)->RunFor(4); 276 socket_data(0)->RunFor(4);
278 277
279 EXPECT_TRUE(url_request.status().is_success()); 278 EXPECT_TRUE(url_request->status().is_success());
280 EXPECT_TRUE(url_request.proxy_server().Equals( 279 EXPECT_TRUE(url_request->proxy_server().Equals(
281 net::HostPortPair::FromString("localhost:80"))); 280 net::HostPortPair::FromString("localhost:80")));
282 EXPECT_EQ(1, network_delegate()->completed_requests()); 281 EXPECT_EQ(1, network_delegate()->completed_requests());
283 EXPECT_EQ(0, network_delegate()->error_count()); 282 EXPECT_EQ(0, network_delegate()->error_count());
284 EXPECT_FALSE(request_delegate.auth_required_called()); 283 EXPECT_FALSE(request_delegate.auth_required_called());
285 EXPECT_EQ("test.html", request_delegate.data_received()); 284 EXPECT_EQ("test.html", request_delegate.data_received());
286 } 285 }
287 286
288 // Regression test for http://crbug.com/237526 . 287 // Regression test for http://crbug.com/237526 .
289 TEST_F(URLRequestFtpJobTest, FtpProxyRequestOrphanJob) { 288 TEST_F(URLRequestFtpJobTest, FtpProxyRequestOrphanJob) {
290 // Use a PAC URL so that URLRequestFtpJob's |pac_request_| field is non-NULL. 289 // Use a PAC URL so that URLRequestFtpJob's |pac_request_| field is non-NULL.
291 request_context()->set_proxy_service( 290 request_context()->set_proxy_service(
292 new ProxyService( 291 new ProxyService(
293 new ProxyConfigServiceFixed( 292 new ProxyConfigServiceFixed(
294 ProxyConfig::CreateFromCustomPacURL(GURL("http://foo"))), 293 ProxyConfig::CreateFromCustomPacURL(GURL("http://foo"))),
295 new MockAsyncProxyResolver, NULL)); 294 new MockAsyncProxyResolver, NULL));
296 295
297 TestDelegate request_delegate; 296 TestDelegate request_delegate;
298 URLRequest url_request(GURL("ftp://ftp.example.com/"), 297 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
299 DEFAULT_PRIORITY, 298 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
300 &request_delegate, 299 NULL));
301 request_context()); 300 url_request->Start();
302 url_request.Start();
303 301
304 // Now |url_request| will be deleted before its completion, 302 // Now |url_request| will be deleted before its completion,
305 // resulting in it being orphaned. It should not crash. 303 // resulting in it being orphaned. It should not crash.
306 } 304 }
307 305
308 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAuthNoCredentials) { 306 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAuthNoCredentials) {
309 MockWrite writes[] = { 307 MockWrite writes[] = {
310 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 308 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
311 "Host: ftp.example.com\r\n" 309 "Host: ftp.example.com\r\n"
312 "Proxy-Connection: keep-alive\r\n\r\n"), 310 "Proxy-Connection: keep-alive\r\n\r\n"),
313 }; 311 };
314 MockRead reads[] = { 312 MockRead reads[] = {
315 // No credentials. 313 // No credentials.
316 MockRead(ASYNC, 1, "HTTP/1.1 407 Proxy Authentication Required\r\n"), 314 MockRead(ASYNC, 1, "HTTP/1.1 407 Proxy Authentication Required\r\n"),
317 MockRead(ASYNC, 2, "Proxy-Authenticate: Basic " 315 MockRead(ASYNC, 2, "Proxy-Authenticate: Basic "
318 "realm=\"MyRealm1\"\r\n"), 316 "realm=\"MyRealm1\"\r\n"),
319 MockRead(ASYNC, 3, "Content-Length: 9\r\n\r\n"), 317 MockRead(ASYNC, 3, "Content-Length: 9\r\n\r\n"),
320 MockRead(ASYNC, 4, "test.html"), 318 MockRead(ASYNC, 4, "test.html"),
321 }; 319 };
322 320
323 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 321 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
324 322
325 TestDelegate request_delegate; 323 TestDelegate request_delegate;
326 URLRequest url_request(GURL("ftp://ftp.example.com/"), 324 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
327 DEFAULT_PRIORITY, 325 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
328 &request_delegate, 326 NULL));
329 request_context()); 327 url_request->Start();
330 url_request.Start(); 328 ASSERT_TRUE(url_request->is_pending());
331 ASSERT_TRUE(url_request.is_pending());
332 socket_data(0)->RunFor(5); 329 socket_data(0)->RunFor(5);
333 330
334 EXPECT_TRUE(url_request.status().is_success()); 331 EXPECT_TRUE(url_request->status().is_success());
335 EXPECT_TRUE(url_request.proxy_server().Equals( 332 EXPECT_TRUE(url_request->proxy_server().Equals(
336 net::HostPortPair::FromString("localhost:80"))); 333 net::HostPortPair::FromString("localhost:80")));
337 EXPECT_EQ(1, network_delegate()->completed_requests()); 334 EXPECT_EQ(1, network_delegate()->completed_requests());
338 EXPECT_EQ(0, network_delegate()->error_count()); 335 EXPECT_EQ(0, network_delegate()->error_count());
339 EXPECT_TRUE(request_delegate.auth_required_called()); 336 EXPECT_TRUE(request_delegate.auth_required_called());
340 EXPECT_EQ("test.html", request_delegate.data_received()); 337 EXPECT_EQ("test.html", request_delegate.data_received());
341 } 338 }
342 339
343 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAuthWithCredentials) { 340 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAuthWithCredentials) {
344 MockWrite writes[] = { 341 MockWrite writes[] = {
345 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 342 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
(...skipping 16 matching lines...) Expand all
362 MockRead(ASYNC, 6, "HTTP/1.1 200 OK\r\n"), 359 MockRead(ASYNC, 6, "HTTP/1.1 200 OK\r\n"),
363 MockRead(ASYNC, 7, "Content-Length: 10\r\n\r\n"), 360 MockRead(ASYNC, 7, "Content-Length: 10\r\n\r\n"),
364 MockRead(ASYNC, 8, "test2.html"), 361 MockRead(ASYNC, 8, "test2.html"),
365 }; 362 };
366 363
367 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 364 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
368 365
369 TestDelegate request_delegate; 366 TestDelegate request_delegate;
370 request_delegate.set_credentials( 367 request_delegate.set_credentials(
371 AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass"))); 368 AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass")));
372 URLRequest url_request(GURL("ftp://ftp.example.com/"), 369 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
373 DEFAULT_PRIORITY, 370 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
374 &request_delegate, 371 NULL));
375 request_context()); 372 url_request->Start();
376 url_request.Start(); 373 ASSERT_TRUE(url_request->is_pending());
377 ASSERT_TRUE(url_request.is_pending());
378 socket_data(0)->RunFor(9); 374 socket_data(0)->RunFor(9);
379 375
380 EXPECT_TRUE(url_request.status().is_success()); 376 EXPECT_TRUE(url_request->status().is_success());
381 EXPECT_EQ(1, network_delegate()->completed_requests()); 377 EXPECT_EQ(1, network_delegate()->completed_requests());
382 EXPECT_EQ(0, network_delegate()->error_count()); 378 EXPECT_EQ(0, network_delegate()->error_count());
383 EXPECT_TRUE(request_delegate.auth_required_called()); 379 EXPECT_TRUE(request_delegate.auth_required_called());
384 EXPECT_EQ("test2.html", request_delegate.data_received()); 380 EXPECT_EQ("test2.html", request_delegate.data_received());
385 } 381 }
386 382
387 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedServerAuthNoCredentials) { 383 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedServerAuthNoCredentials) {
388 MockWrite writes[] = { 384 MockWrite writes[] = {
389 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 385 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
390 "Host: ftp.example.com\r\n" 386 "Host: ftp.example.com\r\n"
391 "Proxy-Connection: keep-alive\r\n\r\n"), 387 "Proxy-Connection: keep-alive\r\n\r\n"),
392 }; 388 };
393 MockRead reads[] = { 389 MockRead reads[] = {
394 // No credentials. 390 // No credentials.
395 MockRead(ASYNC, 1, "HTTP/1.1 401 Unauthorized\r\n"), 391 MockRead(ASYNC, 1, "HTTP/1.1 401 Unauthorized\r\n"),
396 MockRead(ASYNC, 2, "WWW-Authenticate: Basic " 392 MockRead(ASYNC, 2, "WWW-Authenticate: Basic "
397 "realm=\"MyRealm1\"\r\n"), 393 "realm=\"MyRealm1\"\r\n"),
398 MockRead(ASYNC, 3, "Content-Length: 9\r\n\r\n"), 394 MockRead(ASYNC, 3, "Content-Length: 9\r\n\r\n"),
399 MockRead(ASYNC, 4, "test.html"), 395 MockRead(ASYNC, 4, "test.html"),
400 }; 396 };
401 397
402 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 398 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
403 399
404 TestDelegate request_delegate; 400 TestDelegate request_delegate;
405 URLRequest url_request(GURL("ftp://ftp.example.com/"), 401 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
406 DEFAULT_PRIORITY, 402 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
407 &request_delegate, 403 NULL));
408 request_context()); 404 url_request->Start();
409 url_request.Start(); 405 ASSERT_TRUE(url_request->is_pending());
410 ASSERT_TRUE(url_request.is_pending());
411 socket_data(0)->RunFor(5); 406 socket_data(0)->RunFor(5);
412 407
413 EXPECT_TRUE(url_request.status().is_success()); 408 EXPECT_TRUE(url_request->status().is_success());
414 EXPECT_EQ(1, network_delegate()->completed_requests()); 409 EXPECT_EQ(1, network_delegate()->completed_requests());
415 EXPECT_EQ(0, network_delegate()->error_count()); 410 EXPECT_EQ(0, network_delegate()->error_count());
416 EXPECT_TRUE(request_delegate.auth_required_called()); 411 EXPECT_TRUE(request_delegate.auth_required_called());
417 EXPECT_EQ("test.html", request_delegate.data_received()); 412 EXPECT_EQ("test.html", request_delegate.data_received());
418 } 413 }
419 414
420 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedServerAuthWithCredentials) { 415 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedServerAuthWithCredentials) {
421 MockWrite writes[] = { 416 MockWrite writes[] = {
422 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 417 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
423 "Host: ftp.example.com\r\n" 418 "Host: ftp.example.com\r\n"
(...skipping 15 matching lines...) Expand all
439 MockRead(ASYNC, 6, "HTTP/1.1 200 OK\r\n"), 434 MockRead(ASYNC, 6, "HTTP/1.1 200 OK\r\n"),
440 MockRead(ASYNC, 7, "Content-Length: 10\r\n\r\n"), 435 MockRead(ASYNC, 7, "Content-Length: 10\r\n\r\n"),
441 MockRead(ASYNC, 8, "test2.html"), 436 MockRead(ASYNC, 8, "test2.html"),
442 }; 437 };
443 438
444 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 439 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
445 440
446 TestDelegate request_delegate; 441 TestDelegate request_delegate;
447 request_delegate.set_credentials( 442 request_delegate.set_credentials(
448 AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass"))); 443 AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass")));
449 URLRequest url_request(GURL("ftp://ftp.example.com/"), 444 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
450 DEFAULT_PRIORITY, 445 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
451 &request_delegate, 446 NULL));
452 request_context()); 447 url_request->Start();
453 url_request.Start(); 448 ASSERT_TRUE(url_request->is_pending());
454 ASSERT_TRUE(url_request.is_pending());
455 socket_data(0)->RunFor(9); 449 socket_data(0)->RunFor(9);
456 450
457 EXPECT_TRUE(url_request.status().is_success()); 451 EXPECT_TRUE(url_request->status().is_success());
458 EXPECT_EQ(1, network_delegate()->completed_requests()); 452 EXPECT_EQ(1, network_delegate()->completed_requests());
459 EXPECT_EQ(0, network_delegate()->error_count()); 453 EXPECT_EQ(0, network_delegate()->error_count());
460 EXPECT_TRUE(request_delegate.auth_required_called()); 454 EXPECT_TRUE(request_delegate.auth_required_called());
461 EXPECT_EQ("test2.html", request_delegate.data_received()); 455 EXPECT_EQ("test2.html", request_delegate.data_received());
462 } 456 }
463 457
464 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAndServerAuth) { 458 TEST_F(URLRequestFtpJobTest, FtpProxyRequestNeedProxyAndServerAuth) {
465 MockWrite writes[] = { 459 MockWrite writes[] = {
466 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 460 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
467 "Host: ftp.example.com\r\n" 461 "Host: ftp.example.com\r\n"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 499
506 // Make sure cached FTP credentials are not used for proxy authentication. 500 // Make sure cached FTP credentials are not used for proxy authentication.
507 request_context()->GetFtpAuthCache()->Add( 501 request_context()->GetFtpAuthCache()->Add(
508 url.GetOrigin(), 502 url.GetOrigin(),
509 AuthCredentials(ASCIIToUTF16("userdonotuse"), 503 AuthCredentials(ASCIIToUTF16("userdonotuse"),
510 ASCIIToUTF16("passworddonotuse"))); 504 ASCIIToUTF16("passworddonotuse")));
511 505
512 TestDelegate request_delegate; 506 TestDelegate request_delegate;
513 request_delegate.set_credentials( 507 request_delegate.set_credentials(
514 AuthCredentials(ASCIIToUTF16("proxyuser"), ASCIIToUTF16("proxypass"))); 508 AuthCredentials(ASCIIToUTF16("proxyuser"), ASCIIToUTF16("proxypass")));
515 URLRequest url_request( 509 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
516 url, DEFAULT_PRIORITY, &request_delegate, request_context()); 510 url, DEFAULT_PRIORITY, &request_delegate, NULL));
517 url_request.Start(); 511 url_request->Start();
518 ASSERT_TRUE(url_request.is_pending()); 512 ASSERT_TRUE(url_request->is_pending());
519 socket_data(0)->RunFor(5); 513 socket_data(0)->RunFor(5);
520 514
521 request_delegate.set_credentials( 515 request_delegate.set_credentials(
522 AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass"))); 516 AuthCredentials(ASCIIToUTF16("myuser"), ASCIIToUTF16("mypass")));
523 socket_data(0)->RunFor(9); 517 socket_data(0)->RunFor(9);
524 518
525 EXPECT_TRUE(url_request.status().is_success()); 519 EXPECT_TRUE(url_request->status().is_success());
526 EXPECT_EQ(1, network_delegate()->completed_requests()); 520 EXPECT_EQ(1, network_delegate()->completed_requests());
527 EXPECT_EQ(0, network_delegate()->error_count()); 521 EXPECT_EQ(0, network_delegate()->error_count());
528 EXPECT_TRUE(request_delegate.auth_required_called()); 522 EXPECT_TRUE(request_delegate.auth_required_called());
529 EXPECT_EQ("test2.html", request_delegate.data_received()); 523 EXPECT_EQ("test2.html", request_delegate.data_received());
530 } 524 }
531 525
532 TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotSaveCookies) { 526 TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotSaveCookies) {
533 MockWrite writes[] = { 527 MockWrite writes[] = {
534 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 528 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
535 "Host: ftp.example.com\r\n" 529 "Host: ftp.example.com\r\n"
536 "Proxy-Connection: keep-alive\r\n\r\n"), 530 "Proxy-Connection: keep-alive\r\n\r\n"),
537 }; 531 };
538 MockRead reads[] = { 532 MockRead reads[] = {
539 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"), 533 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"),
540 MockRead(ASYNC, 2, "Content-Length: 9\r\n"), 534 MockRead(ASYNC, 2, "Content-Length: 9\r\n"),
541 MockRead(ASYNC, 3, "Set-Cookie: name=value\r\n\r\n"), 535 MockRead(ASYNC, 3, "Set-Cookie: name=value\r\n\r\n"),
542 MockRead(ASYNC, 4, "test.html"), 536 MockRead(ASYNC, 4, "test.html"),
543 }; 537 };
544 538
545 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 539 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
546 540
547 TestDelegate request_delegate; 541 TestDelegate request_delegate;
548 URLRequest url_request(GURL("ftp://ftp.example.com/"), 542 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
549 DEFAULT_PRIORITY, 543 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
550 &request_delegate, 544 NULL));
551 request_context()); 545 url_request->Start();
552 url_request.Start(); 546 ASSERT_TRUE(url_request->is_pending());
553 ASSERT_TRUE(url_request.is_pending());
554 547
555 socket_data(0)->RunFor(5); 548 socket_data(0)->RunFor(5);
556 549
557 EXPECT_TRUE(url_request.status().is_success()); 550 EXPECT_TRUE(url_request->status().is_success());
558 EXPECT_EQ(1, network_delegate()->completed_requests()); 551 EXPECT_EQ(1, network_delegate()->completed_requests());
559 EXPECT_EQ(0, network_delegate()->error_count()); 552 EXPECT_EQ(0, network_delegate()->error_count());
560 553
561 // Make sure we do not accept cookies. 554 // Make sure we do not accept cookies.
562 EXPECT_EQ(0, network_delegate()->set_cookie_count()); 555 EXPECT_EQ(0, network_delegate()->set_cookie_count());
563 556
564 EXPECT_FALSE(request_delegate.auth_required_called()); 557 EXPECT_FALSE(request_delegate.auth_required_called());
565 EXPECT_EQ("test.html", request_delegate.data_received()); 558 EXPECT_EQ("test.html", request_delegate.data_received());
566 } 559 }
567 560
568 TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotFollowRedirects) { 561 TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotFollowRedirects) {
569 MockWrite writes[] = { 562 MockWrite writes[] = {
570 MockWrite(SYNCHRONOUS, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n" 563 MockWrite(SYNCHRONOUS, 0, "GET ftp://ftp.example.com/ HTTP/1.1\r\n"
571 "Host: ftp.example.com\r\n" 564 "Host: ftp.example.com\r\n"
572 "Proxy-Connection: keep-alive\r\n\r\n"), 565 "Proxy-Connection: keep-alive\r\n\r\n"),
573 }; 566 };
574 MockRead reads[] = { 567 MockRead reads[] = {
575 MockRead(SYNCHRONOUS, 1, "HTTP/1.1 302 Found\r\n"), 568 MockRead(SYNCHRONOUS, 1, "HTTP/1.1 302 Found\r\n"),
576 MockRead(ASYNC, 2, "Location: http://other.example.com/\r\n\r\n"), 569 MockRead(ASYNC, 2, "Location: http://other.example.com/\r\n\r\n"),
577 }; 570 };
578 571
579 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 572 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
580 573
581 TestDelegate request_delegate; 574 TestDelegate request_delegate;
582 URLRequest url_request(GURL("ftp://ftp.example.com/"), 575 scoped_ptr<URLRequest> url_request(request_context()->CreateRequest(
583 DEFAULT_PRIORITY, 576 GURL("ftp://ftp.example.com/"), DEFAULT_PRIORITY, &request_delegate,
584 &request_delegate, 577 NULL));
585 request_context()); 578 url_request->Start();
586 url_request.Start(); 579 EXPECT_TRUE(url_request->is_pending());
587 EXPECT_TRUE(url_request.is_pending());
588 580
589 base::MessageLoop::current()->RunUntilIdle(); 581 base::MessageLoop::current()->RunUntilIdle();
590 582
591 EXPECT_TRUE(url_request.is_pending()); 583 EXPECT_TRUE(url_request->is_pending());
592 EXPECT_EQ(0, request_delegate.response_started_count()); 584 EXPECT_EQ(0, request_delegate.response_started_count());
593 EXPECT_EQ(0, network_delegate()->error_count()); 585 EXPECT_EQ(0, network_delegate()->error_count());
594 ASSERT_TRUE(url_request.status().is_success()); 586 ASSERT_TRUE(url_request->status().is_success());
595 587
596 socket_data(0)->RunFor(1); 588 socket_data(0)->RunFor(1);
597 589
598 EXPECT_EQ(1, network_delegate()->completed_requests()); 590 EXPECT_EQ(1, network_delegate()->completed_requests());
599 EXPECT_EQ(1, network_delegate()->error_count()); 591 EXPECT_EQ(1, network_delegate()->error_count());
600 EXPECT_FALSE(url_request.status().is_success()); 592 EXPECT_FALSE(url_request->status().is_success());
601 EXPECT_EQ(ERR_UNSAFE_REDIRECT, url_request.status().error()); 593 EXPECT_EQ(ERR_UNSAFE_REDIRECT, url_request->status().error());
602 } 594 }
603 595
604 // We should re-use socket for requests using the same scheme, host, and port. 596 // We should re-use socket for requests using the same scheme, host, and port.
605 TEST_F(URLRequestFtpJobTest, FtpProxyRequestReuseSocket) { 597 TEST_F(URLRequestFtpJobTest, FtpProxyRequestReuseSocket) {
606 MockWrite writes[] = { 598 MockWrite writes[] = {
607 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/first HTTP/1.1\r\n" 599 MockWrite(ASYNC, 0, "GET ftp://ftp.example.com/first HTTP/1.1\r\n"
608 "Host: ftp.example.com\r\n" 600 "Host: ftp.example.com\r\n"
609 "Proxy-Connection: keep-alive\r\n\r\n"), 601 "Proxy-Connection: keep-alive\r\n\r\n"),
610 MockWrite(ASYNC, 4, "GET ftp://ftp.example.com/second HTTP/1.1\r\n" 602 MockWrite(ASYNC, 4, "GET ftp://ftp.example.com/second HTTP/1.1\r\n"
611 "Host: ftp.example.com\r\n" 603 "Host: ftp.example.com\r\n"
612 "Proxy-Connection: keep-alive\r\n\r\n"), 604 "Proxy-Connection: keep-alive\r\n\r\n"),
613 }; 605 };
614 MockRead reads[] = { 606 MockRead reads[] = {
615 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"), 607 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"),
616 MockRead(ASYNC, 2, "Content-Length: 10\r\n\r\n"), 608 MockRead(ASYNC, 2, "Content-Length: 10\r\n\r\n"),
617 MockRead(ASYNC, 3, "test1.html"), 609 MockRead(ASYNC, 3, "test1.html"),
618 MockRead(ASYNC, 5, "HTTP/1.1 200 OK\r\n"), 610 MockRead(ASYNC, 5, "HTTP/1.1 200 OK\r\n"),
619 MockRead(ASYNC, 6, "Content-Length: 10\r\n\r\n"), 611 MockRead(ASYNC, 6, "Content-Length: 10\r\n\r\n"),
620 MockRead(ASYNC, 7, "test2.html"), 612 MockRead(ASYNC, 7, "test2.html"),
621 }; 613 };
622 614
623 AddSocket(reads, arraysize(reads), writes, arraysize(writes)); 615 AddSocket(reads, arraysize(reads), writes, arraysize(writes));
624 616
625 TestDelegate request_delegate1; 617 TestDelegate request_delegate1;
626 URLRequest url_request1(GURL("ftp://ftp.example.com/first"), 618
627 DEFAULT_PRIORITY, 619 scoped_ptr<URLRequest> url_request1(request_context()->CreateRequest(
628 &request_delegate1, 620 GURL("ftp://ftp.example.com/first"), DEFAULT_PRIORITY, &request_delegate1,
629 request_context()); 621 NULL));
630 url_request1.Start(); 622 url_request1->Start();
631 ASSERT_TRUE(url_request1.is_pending()); 623 ASSERT_TRUE(url_request1->is_pending());
632 socket_data(0)->RunFor(4); 624 socket_data(0)->RunFor(4);
633 625
634 EXPECT_TRUE(url_request1.status().is_success()); 626 EXPECT_TRUE(url_request1->status().is_success());
635 EXPECT_TRUE(url_request1.proxy_server().Equals( 627 EXPECT_TRUE(url_request1->proxy_server().Equals(
636 net::HostPortPair::FromString("localhost:80"))); 628 net::HostPortPair::FromString("localhost:80")));
637 EXPECT_EQ(1, network_delegate()->completed_requests()); 629 EXPECT_EQ(1, network_delegate()->completed_requests());
638 EXPECT_EQ(0, network_delegate()->error_count()); 630 EXPECT_EQ(0, network_delegate()->error_count());
639 EXPECT_FALSE(request_delegate1.auth_required_called()); 631 EXPECT_FALSE(request_delegate1.auth_required_called());
640 EXPECT_EQ("test1.html", request_delegate1.data_received()); 632 EXPECT_EQ("test1.html", request_delegate1.data_received());
641 633
642 TestDelegate request_delegate2; 634 TestDelegate request_delegate2;
643 URLRequest url_request2(GURL("ftp://ftp.example.com/second"), 635 scoped_ptr<URLRequest> url_request2(request_context()->CreateRequest(
644 DEFAULT_PRIORITY, 636 GURL("ftp://ftp.example.com/second"), DEFAULT_PRIORITY,
645 &request_delegate2, 637 &request_delegate2, NULL));
646 request_context()); 638 url_request2->Start();
647 url_request2.Start(); 639 ASSERT_TRUE(url_request2->is_pending());
648 ASSERT_TRUE(url_request2.is_pending());
649 socket_data(0)->RunFor(4); 640 socket_data(0)->RunFor(4);
650 641
651 EXPECT_TRUE(url_request2.status().is_success()); 642 EXPECT_TRUE(url_request2->status().is_success());
652 EXPECT_EQ(2, network_delegate()->completed_requests()); 643 EXPECT_EQ(2, network_delegate()->completed_requests());
653 EXPECT_EQ(0, network_delegate()->error_count()); 644 EXPECT_EQ(0, network_delegate()->error_count());
654 EXPECT_FALSE(request_delegate2.auth_required_called()); 645 EXPECT_FALSE(request_delegate2.auth_required_called());
655 EXPECT_EQ("test2.html", request_delegate2.data_received()); 646 EXPECT_EQ("test2.html", request_delegate2.data_received());
656 } 647 }
657 648
658 // We should not re-use socket when there are two requests to the same host, 649 // We should not re-use socket when there are two requests to the same host,
659 // but one is FTP and the other is HTTP. 650 // but one is FTP and the other is HTTP.
660 TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotReuseSocket) { 651 TEST_F(URLRequestFtpJobTest, FtpProxyRequestDoNotReuseSocket) {
661 MockWrite writes1[] = { 652 MockWrite writes1[] = {
(...skipping 17 matching lines...) Expand all
679 MockRead reads2[] = { 670 MockRead reads2[] = {
680 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"), 671 MockRead(ASYNC, 1, "HTTP/1.1 200 OK\r\n"),
681 MockRead(ASYNC, 2, "Content-Length: 10\r\n\r\n"), 672 MockRead(ASYNC, 2, "Content-Length: 10\r\n\r\n"),
682 MockRead(ASYNC, 3, "test2.html"), 673 MockRead(ASYNC, 3, "test2.html"),
683 }; 674 };
684 675
685 AddSocket(reads1, arraysize(reads1), writes1, arraysize(writes1)); 676 AddSocket(reads1, arraysize(reads1), writes1, arraysize(writes1));
686 AddSocket(reads2, arraysize(reads2), writes2, arraysize(writes2)); 677 AddSocket(reads2, arraysize(reads2), writes2, arraysize(writes2));
687 678
688 TestDelegate request_delegate1; 679 TestDelegate request_delegate1;
689 URLRequest url_request1(GURL("ftp://ftp.example.com/first"), 680 scoped_ptr<URLRequest> url_request1(request_context()->CreateRequest(
690 DEFAULT_PRIORITY, 681 GURL("ftp://ftp.example.com/first"), DEFAULT_PRIORITY,
691 &request_delegate1, 682 &request_delegate1, NULL));
692 request_context()); 683 url_request1->Start();
693 url_request1.Start(); 684 ASSERT_TRUE(url_request1->is_pending());
694 ASSERT_TRUE(url_request1.is_pending());
695 socket_data(0)->RunFor(4); 685 socket_data(0)->RunFor(4);
696 686
697 EXPECT_TRUE(url_request1.status().is_success()); 687 EXPECT_TRUE(url_request1->status().is_success());
698 EXPECT_EQ(1, network_delegate()->completed_requests()); 688 EXPECT_EQ(1, network_delegate()->completed_requests());
699 EXPECT_EQ(0, network_delegate()->error_count()); 689 EXPECT_EQ(0, network_delegate()->error_count());
700 EXPECT_FALSE(request_delegate1.auth_required_called()); 690 EXPECT_FALSE(request_delegate1.auth_required_called());
701 EXPECT_EQ("test1.html", request_delegate1.data_received()); 691 EXPECT_EQ("test1.html", request_delegate1.data_received());
702 692
703 TestDelegate request_delegate2; 693 TestDelegate request_delegate2;
704 URLRequest url_request2(GURL("http://ftp.example.com/second"), 694 scoped_ptr<URLRequest> url_request2(request_context()->CreateRequest(
705 DEFAULT_PRIORITY, 695 GURL("http://ftp.example.com/second"), DEFAULT_PRIORITY,
706 &request_delegate2, 696 &request_delegate2, NULL));
707 request_context()); 697 url_request2->Start();
708 url_request2.Start(); 698 ASSERT_TRUE(url_request2->is_pending());
709 ASSERT_TRUE(url_request2.is_pending());
710 socket_data(1)->RunFor(4); 699 socket_data(1)->RunFor(4);
711 700
712 EXPECT_TRUE(url_request2.status().is_success()); 701 EXPECT_TRUE(url_request2->status().is_success());
713 EXPECT_EQ(2, network_delegate()->completed_requests()); 702 EXPECT_EQ(2, network_delegate()->completed_requests());
714 EXPECT_EQ(0, network_delegate()->error_count()); 703 EXPECT_EQ(0, network_delegate()->error_count());
715 EXPECT_FALSE(request_delegate2.auth_required_called()); 704 EXPECT_FALSE(request_delegate2.auth_required_called());
716 EXPECT_EQ("test2.html", request_delegate2.data_received()); 705 EXPECT_EQ("test2.html", request_delegate2.data_received());
717 } 706 }
718 707
719 } // namespace 708 } // namespace
720 709
721 } // namespace net 710 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_request_context_builder_unittest.cc ('k') | net/url_request/url_request_http_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698