OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/compiler_specific.h" | 5 #include "base/compiler_specific.h" |
6 #include "googleurl/src/gurl.h" | 6 #include "googleurl/src/gurl.h" |
7 #include "net/base/net_errors.h" | 7 #include "net/base/net_errors.h" |
8 #include "net/proxy/proxy_config_service.h" | 8 #include "net/proxy/proxy_config_service.h" |
9 #include "net/proxy/proxy_resolver.h" | 9 #include "net/proxy/proxy_resolver.h" |
10 #include "net/proxy/proxy_script_fetcher.h" | 10 #include "net/proxy/proxy_script_fetcher.h" |
(...skipping 668 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
679 EXPECT_EQ(rv, net::OK); | 679 EXPECT_EQ(rv, net::OK); |
680 | 680 |
681 // The first proxy is still there since the list of bad proxies got cleared. | 681 // The first proxy is still there since the list of bad proxies got cleared. |
682 EXPECT_FALSE(info3.is_direct()); | 682 EXPECT_FALSE(info3.is_direct()); |
683 EXPECT_EQ("foopy1:8080", info3.proxy_server().ToURI()); | 683 EXPECT_EQ("foopy1:8080", info3.proxy_server().ToURI()); |
684 } | 684 } |
685 | 685 |
686 TEST(ProxyServiceTest, ProxyBypassList) { | 686 TEST(ProxyServiceTest, ProxyBypassList) { |
687 // Test what happens when a proxy bypass list is specified. | 687 // Test what happens when a proxy bypass list is specified. |
688 | 688 |
| 689 net::ProxyInfo info; |
689 net::ProxyConfig config; | 690 net::ProxyConfig config; |
690 config.proxy_rules.ParseFromString("foopy1:8080;foopy2:9090"); | 691 config.proxy_rules.ParseFromString("foopy1:8080;foopy2:9090"); |
691 config.auto_detect = false; | 692 config.auto_detect = false; |
692 config.proxy_bypass_local_names = true; | 693 config.proxy_bypass_local_names = true; |
693 | 694 |
694 SyncProxyService service(new MockProxyConfigService(config), | 695 { |
695 new MockProxyResolver()); | 696 SyncProxyService service(new MockProxyConfigService(config), |
696 GURL url("http://www.google.com/"); | 697 new MockProxyResolver()); |
697 // Get the proxy information. | 698 GURL url("http://www.google.com/"); |
698 net::ProxyInfo info; | 699 // Get the proxy information. |
699 int rv = service.ResolveProxy(url, &info); | 700 int rv = service.ResolveProxy(url, &info); |
700 EXPECT_EQ(rv, net::OK); | 701 EXPECT_EQ(rv, net::OK); |
701 EXPECT_FALSE(info.is_direct()); | 702 EXPECT_FALSE(info.is_direct()); |
| 703 } |
702 | 704 |
703 SyncProxyService service1(new MockProxyConfigService(config), | 705 { |
704 new MockProxyResolver()); | 706 SyncProxyService service(new MockProxyConfigService(config), |
705 GURL test_url1("local"); | 707 new MockProxyResolver()); |
706 net::ProxyInfo info1; | 708 GURL test_url("local"); |
707 rv = service1.ResolveProxy(test_url1, &info1); | 709 int rv = service.ResolveProxy(test_url, &info); |
708 EXPECT_EQ(rv, net::OK); | 710 EXPECT_EQ(rv, net::OK); |
709 EXPECT_TRUE(info1.is_direct()); | 711 EXPECT_TRUE(info.is_direct()); |
| 712 } |
710 | 713 |
711 config.proxy_bypass.clear(); | 714 config.proxy_bypass.clear(); |
712 config.proxy_bypass.push_back("*.org"); | 715 config.proxy_bypass.push_back("*.org"); |
713 config.proxy_bypass_local_names = true; | 716 config.proxy_bypass_local_names = true; |
714 SyncProxyService service2(new MockProxyConfigService(config), | 717 { |
715 new MockProxyResolver); | 718 SyncProxyService service(new MockProxyConfigService(config), |
716 GURL test_url2("http://www.webkit.org"); | 719 new MockProxyResolver); |
717 net::ProxyInfo info2; | 720 GURL test_url("http://www.webkit.org"); |
718 rv = service2.ResolveProxy(test_url2, &info2); | 721 int rv = service.ResolveProxy(test_url, &info); |
719 EXPECT_EQ(rv, net::OK); | 722 EXPECT_EQ(rv, net::OK); |
720 EXPECT_TRUE(info2.is_direct()); | 723 EXPECT_TRUE(info.is_direct()); |
| 724 } |
721 | 725 |
722 config.proxy_bypass.clear(); | 726 config.proxy_bypass.clear(); |
723 config.proxy_bypass.push_back("*.org"); | 727 config.proxy_bypass.push_back("*.org"); |
724 config.proxy_bypass.push_back("7*"); | 728 config.proxy_bypass.push_back("7*"); |
725 config.proxy_bypass_local_names = true; | 729 config.proxy_bypass_local_names = true; |
726 SyncProxyService service3(new MockProxyConfigService(config), | 730 { |
727 new MockProxyResolver); | 731 SyncProxyService service(new MockProxyConfigService(config), |
728 GURL test_url3("http://74.125.19.147"); | 732 new MockProxyResolver); |
729 net::ProxyInfo info3; | 733 GURL test_url("http://74.125.19.147"); |
730 rv = service3.ResolveProxy(test_url3, &info3); | 734 int rv = service.ResolveProxy(test_url, &info); |
731 EXPECT_EQ(rv, net::OK); | 735 EXPECT_EQ(rv, net::OK); |
732 EXPECT_TRUE(info3.is_direct()); | 736 EXPECT_TRUE(info.is_direct()); |
| 737 } |
733 | 738 |
734 config.proxy_bypass.clear(); | 739 config.proxy_bypass.clear(); |
735 config.proxy_bypass.push_back("*.org"); | 740 config.proxy_bypass.push_back("*.org"); |
736 config.proxy_bypass_local_names = true; | 741 config.proxy_bypass_local_names = true; |
737 SyncProxyService service4(new MockProxyConfigService(config), | 742 { |
738 new MockProxyResolver); | 743 SyncProxyService service(new MockProxyConfigService(config), |
739 GURL test_url4("http://www.msn.com"); | 744 new MockProxyResolver); |
740 net::ProxyInfo info4; | 745 GURL test_url("http://www.msn.com"); |
741 rv = service4.ResolveProxy(test_url4, &info4); | 746 int rv = service.ResolveProxy(test_url, &info); |
742 EXPECT_EQ(rv, net::OK); | 747 EXPECT_EQ(rv, net::OK); |
743 EXPECT_FALSE(info4.is_direct()); | 748 EXPECT_FALSE(info.is_direct()); |
| 749 } |
744 | 750 |
745 config.proxy_bypass.clear(); | 751 config.proxy_bypass.clear(); |
746 config.proxy_bypass.push_back("*.MSN.COM"); | 752 config.proxy_bypass.push_back("*.MSN.COM"); |
747 config.proxy_bypass_local_names = true; | 753 config.proxy_bypass_local_names = true; |
748 SyncProxyService service5(new MockProxyConfigService(config), | 754 { |
749 new MockProxyResolver); | 755 SyncProxyService service(new MockProxyConfigService(config), |
750 GURL test_url5("http://www.msnbc.msn.com"); | 756 new MockProxyResolver); |
751 net::ProxyInfo info5; | 757 GURL test_url("http://www.msnbc.msn.com"); |
752 rv = service5.ResolveProxy(test_url5, &info5); | 758 int rv = service.ResolveProxy(test_url, &info); |
753 EXPECT_EQ(rv, net::OK); | 759 EXPECT_EQ(rv, net::OK); |
754 EXPECT_TRUE(info5.is_direct()); | 760 EXPECT_TRUE(info.is_direct()); |
| 761 } |
755 | 762 |
756 config.proxy_bypass.clear(); | 763 config.proxy_bypass.clear(); |
757 config.proxy_bypass.push_back("*.msn.com"); | 764 config.proxy_bypass.push_back("*.msn.com"); |
758 config.proxy_bypass_local_names = true; | 765 config.proxy_bypass_local_names = true; |
759 SyncProxyService service6(new MockProxyConfigService(config), | 766 { |
760 new MockProxyResolver); | 767 SyncProxyService service(new MockProxyConfigService(config), |
761 GURL test_url6("HTTP://WWW.MSNBC.MSN.COM"); | 768 new MockProxyResolver); |
762 net::ProxyInfo info6; | 769 GURL test_url("HTTP://WWW.MSNBC.MSN.COM"); |
763 rv = service6.ResolveProxy(test_url6, &info6); | 770 int rv = service.ResolveProxy(test_url, &info); |
764 EXPECT_EQ(rv, net::OK); | 771 EXPECT_EQ(rv, net::OK); |
765 EXPECT_TRUE(info6.is_direct()); | 772 EXPECT_TRUE(info.is_direct()); |
| 773 } |
| 774 } |
| 775 |
| 776 TEST(ProxyServiceTest, ProxyBypassListWithPorts) { |
| 777 // Test port specification in bypass list entries. |
| 778 net::ProxyInfo info; |
| 779 net::ProxyConfig config; |
| 780 config.proxy_rules.ParseFromString("foopy1:8080;foopy2:9090"); |
| 781 config.auto_detect = false; |
| 782 config.proxy_bypass_local_names = false; |
| 783 |
| 784 config.proxy_bypass.clear(); |
| 785 config.proxy_bypass.push_back("*.example.com:99"); |
| 786 { |
| 787 SyncProxyService service(new MockProxyConfigService(config), |
| 788 new MockProxyResolver); |
| 789 { |
| 790 GURL test_url("http://www.example.com:99"); |
| 791 int rv = service.ResolveProxy(test_url, &info); |
| 792 EXPECT_EQ(rv, net::OK); |
| 793 EXPECT_TRUE(info.is_direct()); |
| 794 } |
| 795 { |
| 796 GURL test_url("http://www.example.com:100"); |
| 797 int rv = service.ResolveProxy(test_url, &info); |
| 798 EXPECT_EQ(rv, net::OK); |
| 799 EXPECT_FALSE(info.is_direct()); |
| 800 } |
| 801 { |
| 802 GURL test_url("http://www.example.com"); |
| 803 int rv = service.ResolveProxy(test_url, &info); |
| 804 EXPECT_EQ(rv, net::OK); |
| 805 EXPECT_FALSE(info.is_direct()); |
| 806 } |
| 807 } |
| 808 |
| 809 config.proxy_bypass.clear(); |
| 810 config.proxy_bypass.push_back("*.example.com:80"); |
| 811 { |
| 812 SyncProxyService service(new MockProxyConfigService(config), |
| 813 new MockProxyResolver); |
| 814 GURL test_url("http://www.example.com"); |
| 815 int rv = service.ResolveProxy(test_url, &info); |
| 816 EXPECT_EQ(rv, net::OK); |
| 817 EXPECT_TRUE(info.is_direct()); |
| 818 } |
| 819 |
| 820 config.proxy_bypass.clear(); |
| 821 config.proxy_bypass.push_back("*.example.com"); |
| 822 { |
| 823 SyncProxyService service(new MockProxyConfigService(config), |
| 824 new MockProxyResolver); |
| 825 GURL test_url("http://www.example.com:99"); |
| 826 int rv = service.ResolveProxy(test_url, &info); |
| 827 EXPECT_EQ(rv, net::OK); |
| 828 EXPECT_TRUE(info.is_direct()); |
| 829 } |
| 830 |
| 831 // IPv6 with port. |
| 832 config.proxy_bypass.clear(); |
| 833 config.proxy_bypass.push_back("[3ffe:2a00:100:7031::1]:99"); |
| 834 { |
| 835 SyncProxyService service(new MockProxyConfigService(config), |
| 836 new MockProxyResolver); |
| 837 { |
| 838 GURL test_url("http://[3ffe:2a00:100:7031::1]:99/"); |
| 839 int rv = service.ResolveProxy(test_url, &info); |
| 840 EXPECT_EQ(rv, net::OK); |
| 841 EXPECT_TRUE(info.is_direct()); |
| 842 } |
| 843 { |
| 844 GURL test_url("http://[3ffe:2a00:100:7031::1]/"); |
| 845 int rv = service.ResolveProxy(test_url, &info); |
| 846 EXPECT_EQ(rv, net::OK); |
| 847 EXPECT_FALSE(info.is_direct()); |
| 848 } |
| 849 } |
| 850 |
| 851 // IPv6 without port. The bypass entry ought to work without the |
| 852 // brackets, but the bypass matching logic in ProxyService is |
| 853 // currently limited. |
| 854 config.proxy_bypass.clear(); |
| 855 config.proxy_bypass.push_back("[3ffe:2a00:100:7031::1]"); |
| 856 { |
| 857 SyncProxyService service(new MockProxyConfigService(config), |
| 858 new MockProxyResolver); |
| 859 { |
| 860 GURL test_url("http://[3ffe:2a00:100:7031::1]:99/"); |
| 861 int rv = service.ResolveProxy(test_url, &info); |
| 862 EXPECT_EQ(rv, net::OK); |
| 863 EXPECT_TRUE(info.is_direct()); |
| 864 } |
| 865 { |
| 866 GURL test_url("http://[3ffe:2a00:100:7031::1]/"); |
| 867 int rv = service.ResolveProxy(test_url, &info); |
| 868 EXPECT_EQ(rv, net::OK); |
| 869 EXPECT_TRUE(info.is_direct()); |
| 870 } |
| 871 } |
766 } | 872 } |
767 | 873 |
768 TEST(ProxyServiceTest, PerProtocolProxyTests) { | 874 TEST(ProxyServiceTest, PerProtocolProxyTests) { |
769 net::ProxyConfig config; | 875 net::ProxyConfig config; |
770 config.proxy_rules.ParseFromString("http=foopy1:8080;https=foopy2:8080"); | 876 config.proxy_rules.ParseFromString("http=foopy1:8080;https=foopy2:8080"); |
771 config.auto_detect = false; | 877 config.auto_detect = false; |
772 | 878 |
773 SyncProxyService service1(new MockProxyConfigService(config), | 879 SyncProxyService service1(new MockProxyConfigService(config), |
774 new MockProxyResolver); | 880 new MockProxyResolver); |
775 GURL test_url1("http://www.msn.com"); | 881 GURL test_url1("http://www.msn.com"); |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
983 result3->WaitUntilCompleted(); | 1089 result3->WaitUntilCompleted(); |
984 | 1090 |
985 EXPECT_FALSE(result1->IsCompleted()); // Cancelled. | 1091 EXPECT_FALSE(result1->IsCompleted()); // Cancelled. |
986 EXPECT_FALSE(result2->IsCompleted()); // Cancelled. | 1092 EXPECT_FALSE(result2->IsCompleted()); // Cancelled. |
987 | 1093 |
988 EXPECT_TRUE(result3->IsCompleted()); | 1094 EXPECT_TRUE(result3->IsCompleted()); |
989 EXPECT_EQ(net::OK, result3->GetResultCode()); | 1095 EXPECT_EQ(net::OK, result3->GetResultCode()); |
990 EXPECT_EQ("pac-v1.request3:80", | 1096 EXPECT_EQ("pac-v1.request3:80", |
991 result3->GetProxyInfo().proxy_server().ToURI()); | 1097 result3->GetProxyInfo().proxy_server().ToURI()); |
992 } | 1098 } |
OLD | NEW |