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

Side by Side Diff: net/socket/ssl_client_socket_pool_unittest.cc

Issue 3039028: Make HttpAuthController not reference counted. (Closed)
Patch Set: Created 10 years, 5 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
« no previous file with comments | « net/socket/ssl_client_socket_pool.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/http/http_proxy_client_socket_pool.h" 5 #include "net/http/http_proxy_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "net/base/auth.h" 10 #include "net/base/auth.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 socks_pool ? socks_socket_pool_ : NULL, 73 socks_pool ? socks_socket_pool_ : NULL,
74 NULL); 74 NULL);
75 } 75 }
76 76
77 scoped_refptr<SSLSocketParams> SSLParams( 77 scoped_refptr<SSLSocketParams> SSLParams(
78 ProxyServer::Scheme proxy, struct MockHttpAuthControllerData* auth_data, 78 ProxyServer::Scheme proxy, struct MockHttpAuthControllerData* auth_data,
79 size_t auth_data_len, bool want_spdy) { 79 size_t auth_data_len, bool want_spdy) {
80 80
81 scoped_refptr<HttpProxySocketParams> http_proxy_params; 81 scoped_refptr<HttpProxySocketParams> http_proxy_params;
82 if (proxy == ProxyServer::SCHEME_HTTP) { 82 if (proxy == ProxyServer::SCHEME_HTTP) {
83 scoped_refptr<MockHttpAuthController> auth_controller = 83 MockHttpAuthController* auth_controller = new MockHttpAuthController();
84 new MockHttpAuthController();
85 auth_controller->SetMockAuthControllerData(auth_data, auth_data_len); 84 auth_controller->SetMockAuthControllerData(auth_data, auth_data_len);
86 http_proxy_params = new HttpProxySocketParams(proxy_tcp_socket_params_, 85 http_proxy_params = new HttpProxySocketParams(proxy_tcp_socket_params_,
87 GURL("http://host"), 86 GURL("http://host"),
88 HostPortPair("host", 80), 87 HostPortPair("host", 80),
89 auth_controller, true); 88 auth_controller, true);
90 } 89 }
91 90
92 return make_scoped_refptr(new SSLSocketParams( 91 return make_scoped_refptr(new SSLSocketParams(
93 proxy == ProxyServer::SCHEME_DIRECT ? direct_tcp_socket_params_ : NULL, 92 proxy == ProxyServer::SCHEME_DIRECT ? direct_tcp_socket_params_ : NULL,
94 http_proxy_params, 93 http_proxy_params,
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"), 483 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
485 }; 484 };
486 MockRead reads[] = { 485 MockRead reads[] = {
487 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"), 486 MockRead(false, "HTTP/1.1 200 Connection Established\r\n\r\n"),
488 }; 487 };
489 StaticSocketDataProvider data(reads, arraysize(reads), writes, 488 StaticSocketDataProvider data(reads, arraysize(reads), writes,
490 arraysize(writes)); 489 arraysize(writes));
491 data.set_connect_data(MockConnect(false, OK)); 490 data.set_connect_data(MockConnect(false, OK));
492 socket_factory_.AddSocketDataProvider(&data); 491 socket_factory_.AddSocketDataProvider(&data);
493 MockHttpAuthControllerData auth_data[] = { 492 MockHttpAuthControllerData auth_data[] = {
494 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 493 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
494 ""),
495 }; 495 };
496 SSLSocketDataProvider ssl(false, OK); 496 SSLSocketDataProvider ssl(false, OK);
497 socket_factory_.AddSSLSocketDataProvider(&ssl); 497 socket_factory_.AddSSLSocketDataProvider(&ssl);
498 498
499 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 499 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
500 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 500 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
501 auth_data, 501 auth_data,
502 arraysize(auth_data), 502 arraysize(auth_data),
503 false); 503 false);
504 504
(...skipping 12 matching lines...) Expand all
517 "Proxy-Connection: keep-alive\r\n" 517 "Proxy-Connection: keep-alive\r\n"
518 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"), 518 "Proxy-Authorization: Basic Zm9vOmJheg==\r\n\r\n"),
519 }; 519 };
520 MockRead reads[] = { 520 MockRead reads[] = {
521 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 521 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
522 }; 522 };
523 StaticSocketDataProvider data(reads, arraysize(reads), writes, 523 StaticSocketDataProvider data(reads, arraysize(reads), writes,
524 arraysize(writes)); 524 arraysize(writes));
525 socket_factory_.AddSocketDataProvider(&data); 525 socket_factory_.AddSocketDataProvider(&data);
526 MockHttpAuthControllerData auth_data[] = { 526 MockHttpAuthControllerData auth_data[] = {
527 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 527 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
528 ""),
528 }; 529 };
529 SSLSocketDataProvider ssl(true, OK); 530 SSLSocketDataProvider ssl(true, OK);
530 socket_factory_.AddSSLSocketDataProvider(&ssl); 531 socket_factory_.AddSSLSocketDataProvider(&ssl);
531 532
532 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 533 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
533 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 534 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
534 auth_data, 535 auth_data,
535 arraysize(auth_data), 536 arraysize(auth_data),
536 false); 537 false);
537 538
(...skipping 18 matching lines...) Expand all
556 MockRead reads[] = { 557 MockRead reads[] = {
557 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 558 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
558 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 559 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
559 MockRead("Content-Length: 10\r\n\r\n"), 560 MockRead("Content-Length: 10\r\n\r\n"),
560 MockRead("0123456789"), 561 MockRead("0123456789"),
561 }; 562 };
562 StaticSocketDataProvider data(reads, arraysize(reads), writes, 563 StaticSocketDataProvider data(reads, arraysize(reads), writes,
563 arraysize(writes)); 564 arraysize(writes));
564 socket_factory_.AddSocketDataProvider(&data); 565 socket_factory_.AddSocketDataProvider(&data);
565 MockHttpAuthControllerData auth_data[] = { 566 MockHttpAuthControllerData auth_data[] = {
566 MockHttpAuthControllerData(""), 567 MockHttpAuthControllerData("", "", ""),
567 }; 568 };
568 SSLSocketDataProvider ssl(true, OK); 569 SSLSocketDataProvider ssl(true, OK);
569 socket_factory_.AddSSLSocketDataProvider(&ssl); 570 socket_factory_.AddSSLSocketDataProvider(&ssl);
570 571
571 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 572 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
572 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 573 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
573 auth_data, 574 auth_data,
574 arraysize(auth_data), 575 arraysize(auth_data),
575 false); 576 false);
576 577
(...skipping 25 matching lines...) Expand all
602 MockRead reads[] = { 603 MockRead reads[] = {
603 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 604 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
604 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 605 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
605 MockRead("Content-Length: 10\r\n\r\n"), 606 MockRead("Content-Length: 10\r\n\r\n"),
606 MockRead("0123456789"), 607 MockRead("0123456789"),
607 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 608 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
608 }; 609 };
609 StaticSocketDataProvider data(reads, arraysize(reads), writes, 610 StaticSocketDataProvider data(reads, arraysize(reads), writes,
610 arraysize(writes)); 611 arraysize(writes));
611 socket_factory_.AddSocketDataProvider(&data); 612 socket_factory_.AddSocketDataProvider(&data);
612 MockHttpAuthControllerData auth_data[] = { 613 MockHttpAuthControllerData auth_data1[] = {
613 MockHttpAuthControllerData(""), 614 MockHttpAuthControllerData("", "foo", "bar"),
614 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 615 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==", "",
616 ""),
617 };
618 MockHttpAuthControllerData auth_data2[] = {
619 MockHttpAuthControllerData("", "foo", "bar"),
615 }; 620 };
616 SSLSocketDataProvider ssl(true, OK); 621 SSLSocketDataProvider ssl(true, OK);
617 socket_factory_.AddSSLSocketDataProvider(&ssl); 622 socket_factory_.AddSSLSocketDataProvider(&ssl);
618 623
619 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 624 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
620 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 625 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
621 auth_data, 626 auth_data1,
622 arraysize(auth_data), 627 arraysize(auth_data1),
623 false); 628 false);
624 629
625 ClientSocketHandle handle; 630 ClientSocketHandle handle;
626 TestCompletionCallback callback; 631 TestCompletionCallback callback;
627 int rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog()); 632 int rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog());
628 EXPECT_EQ(ERR_IO_PENDING, rv); 633 EXPECT_EQ(ERR_IO_PENDING, rv);
629 EXPECT_FALSE(handle.is_initialized()); 634 EXPECT_FALSE(handle.is_initialized());
630 EXPECT_FALSE(handle.socket()); 635 EXPECT_FALSE(handle.socket());
631 636
632 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); 637 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult());
633 EXPECT_FALSE(handle.is_initialized()); 638 EXPECT_FALSE(handle.is_initialized());
634 EXPECT_FALSE(handle.socket()); 639 EXPECT_FALSE(handle.socket());
635 EXPECT_FALSE(handle.is_ssl_error()); 640 EXPECT_FALSE(handle.is_ssl_error());
636 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); 641 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info();
637 EXPECT_EQ(tunnel_info.headers->response_code(), 407); 642 EXPECT_EQ(tunnel_info.headers->response_code(), 407);
638 643
639 params->http_proxy_params()->auth_controller()->ResetAuth(std::wstring(), 644 params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data2,
640 std::wstring()); 645 arraysize(auth_data2), false);
641 rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog()); 646 rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog());
642 EXPECT_EQ(ERR_IO_PENDING, rv); 647 EXPECT_EQ(ERR_IO_PENDING, rv);
643 EXPECT_FALSE(handle.is_initialized()); 648 EXPECT_FALSE(handle.is_initialized());
644 EXPECT_FALSE(handle.socket()); 649 EXPECT_FALSE(handle.socket());
645 650
646 // Test that http://crbug.com/49325 doesn't regress. 651 // Test that http://crbug.com/49325 doesn't regress.
647 EXPECT_EQ(handle.GetLoadState(), LOAD_STATE_ESTABLISHING_PROXY_TUNNEL); 652 EXPECT_EQ(handle.GetLoadState(), LOAD_STATE_ESTABLISHING_PROXY_TUNNEL);
648 653
649 EXPECT_EQ(OK, callback.WaitForResult()); 654 EXPECT_EQ(OK, callback.WaitForResult());
650 EXPECT_TRUE(handle.is_initialized()); 655 EXPECT_TRUE(handle.is_initialized());
(...skipping 19 matching lines...) Expand all
670 }; 675 };
671 MockRead reads2[] = { 676 MockRead reads2[] = {
672 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 677 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
673 }; 678 };
674 StaticSocketDataProvider data1(reads1, arraysize(reads1), writes1, 679 StaticSocketDataProvider data1(reads1, arraysize(reads1), writes1,
675 arraysize(writes1)); 680 arraysize(writes1));
676 socket_factory_.AddSocketDataProvider(&data1); 681 socket_factory_.AddSocketDataProvider(&data1);
677 StaticSocketDataProvider data2(reads2, arraysize(reads2), writes2, 682 StaticSocketDataProvider data2(reads2, arraysize(reads2), writes2,
678 arraysize(writes2)); 683 arraysize(writes2));
679 socket_factory_.AddSocketDataProvider(&data2); 684 socket_factory_.AddSocketDataProvider(&data2);
680 MockHttpAuthControllerData auth_data[] = { 685 MockHttpAuthControllerData auth_data1[] = {
681 MockHttpAuthControllerData(""), 686 MockHttpAuthControllerData("", "foo", "bar"),
682 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg=="), 687 MockHttpAuthControllerData("Proxy-Authorization: Basic Zm9vOmJheg==",
688 "", ""),
689 };
690 MockHttpAuthControllerData auth_data2[] = {
691 MockHttpAuthControllerData("", "foo", "bar"),
683 }; 692 };
684 SSLSocketDataProvider ssl(true, OK); 693 SSLSocketDataProvider ssl(true, OK);
685 socket_factory_.AddSSLSocketDataProvider(&ssl); 694 socket_factory_.AddSSLSocketDataProvider(&ssl);
686 695
687 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 696 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
688 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 697 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
689 auth_data, 698 auth_data1,
690 arraysize(auth_data), 699 arraysize(auth_data1),
691 false); 700 false);
692 701
693 ClientSocketHandle handle; 702 ClientSocketHandle handle;
694 TestCompletionCallback callback; 703 TestCompletionCallback callback;
695 int rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog()); 704 int rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog());
696 EXPECT_EQ(ERR_IO_PENDING, rv); 705 EXPECT_EQ(ERR_IO_PENDING, rv);
697 EXPECT_FALSE(handle.is_initialized()); 706 EXPECT_FALSE(handle.is_initialized());
698 EXPECT_FALSE(handle.socket()); 707 EXPECT_FALSE(handle.socket());
699 708
700 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult()); 709 EXPECT_EQ(ERR_PROXY_AUTH_REQUESTED, callback.WaitForResult());
701 EXPECT_FALSE(handle.is_initialized()); 710 EXPECT_FALSE(handle.is_initialized());
702 EXPECT_FALSE(handle.socket()); 711 EXPECT_FALSE(handle.socket());
703 EXPECT_FALSE(handle.is_ssl_error()); 712 EXPECT_FALSE(handle.is_ssl_error());
704 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); 713 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info();
705 EXPECT_EQ(tunnel_info.headers->response_code(), 407); 714 EXPECT_EQ(tunnel_info.headers->response_code(), 407);
706 715
707 params->http_proxy_params()->auth_controller()->ResetAuth(std::wstring(), 716 params = SSLParams(ProxyServer::SCHEME_HTTP, auth_data2,
708 std::wstring()); 717 arraysize(auth_data2), false);
709 rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog()); 718 rv = handle.Init("a", params, MEDIUM, &callback, pool_, BoundNetLog());
710 EXPECT_EQ(ERR_IO_PENDING, rv); 719 EXPECT_EQ(ERR_IO_PENDING, rv);
711 EXPECT_FALSE(handle.is_initialized()); 720 EXPECT_FALSE(handle.is_initialized());
712 EXPECT_FALSE(handle.socket()); 721 EXPECT_FALSE(handle.socket());
713 722
714 EXPECT_EQ(OK, callback.WaitForResult()); 723 EXPECT_EQ(OK, callback.WaitForResult());
715 EXPECT_TRUE(handle.is_initialized()); 724 EXPECT_TRUE(handle.is_initialized());
716 EXPECT_TRUE(handle.socket()); 725 EXPECT_TRUE(handle.socket());
717 } 726 }
718 727
719 // It would be nice to also test the timeouts in SSLClientSocketPool. 728 // It would be nice to also test the timeouts in SSLClientSocketPool.
720 729
721 } // namespace 730 } // namespace
722 731
723 } // namespace net 732 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/ssl_client_socket_pool.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698