| 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 |