Index: net/proxy/proxy_config_unittest.cc |
=================================================================== |
--- net/proxy/proxy_config_unittest.cc (revision 25517) |
+++ net/proxy/proxy_config_unittest.cc (working copy) |
@@ -2,28 +2,31 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include <ostream> |
+ |
#include "net/proxy/proxy_config.h" |
#include "net/proxy/proxy_config_service_common_unittest.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+namespace net { |
namespace { |
-static void ExpectProxyServerEquals(const char* expectation, |
- const net::ProxyServer& proxy_server) { |
+ |
+void ExpectProxyServerEquals(const char* expectation, |
+ const ProxyServer& proxy_server) { |
if (expectation == NULL) { |
EXPECT_FALSE(proxy_server.is_valid()); |
} else { |
EXPECT_EQ(expectation, proxy_server.ToURI()); |
} |
} |
-} |
TEST(ProxyConfigTest, Equals) { |
// Test |ProxyConfig::auto_detect|. |
- net::ProxyConfig config1; |
+ ProxyConfig config1; |
config1.auto_detect = true; |
- net::ProxyConfig config2; |
+ ProxyConfig config2; |
config2.auto_detect = false; |
EXPECT_FALSE(config1.Equals(config2)); |
@@ -48,22 +51,22 @@ |
// Test |ProxyConfig::proxy_rules|. |
- config2.proxy_rules.type = net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
+ config2.proxy_rules.type = ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
config2.proxy_rules.single_proxy = |
- net::ProxyServer::FromURI("myproxy:80", net::ProxyServer::SCHEME_HTTP); |
+ ProxyServer::FromURI("myproxy:80", ProxyServer::SCHEME_HTTP); |
EXPECT_FALSE(config1.Equals(config2)); |
EXPECT_FALSE(config2.Equals(config1)); |
- config1.proxy_rules.type = net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
+ config1.proxy_rules.type = ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
config1.proxy_rules.single_proxy = |
- net::ProxyServer::FromURI("myproxy:100", net::ProxyServer::SCHEME_HTTP); |
+ ProxyServer::FromURI("myproxy:100", ProxyServer::SCHEME_HTTP); |
EXPECT_FALSE(config1.Equals(config2)); |
EXPECT_FALSE(config2.Equals(config1)); |
config1.proxy_rules.single_proxy = |
- net::ProxyServer::FromURI("myproxy", net::ProxyServer::SCHEME_HTTP); |
+ ProxyServer::FromURI("myproxy", ProxyServer::SCHEME_HTTP); |
EXPECT_TRUE(config1.Equals(config2)); |
EXPECT_TRUE(config2.Equals(config1)); |
@@ -97,7 +100,7 @@ |
const struct { |
const char* proxy_rules; |
- net::ProxyConfig::ProxyRules::Type type; |
+ ProxyConfig::ProxyRules::Type type; |
const char* single_proxy; |
const char* proxy_for_http; |
const char* proxy_for_https; |
@@ -108,7 +111,7 @@ |
{ |
"myproxy:80", |
- net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
+ ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
"myproxy:80", |
NULL, |
NULL, |
@@ -120,7 +123,7 @@ |
{ |
"http=myproxy:80", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
"myproxy:80", |
NULL, |
@@ -132,7 +135,7 @@ |
{ |
"ftp=ftp-proxy ; https=socks4://foopy", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
NULL, |
"socks4://foopy:1080", |
@@ -146,7 +149,7 @@ |
{ |
"foopy ; ftp=ftp-proxy", |
- net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
+ ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
"foopy:80", |
NULL, |
NULL, |
@@ -160,7 +163,7 @@ |
{ |
"ftp=ftp-proxy ; foopy", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
NULL, |
NULL, |
@@ -172,7 +175,7 @@ |
{ |
"ftp=ftp1 ; ftp=ftp2 ; ftp=ftp3", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
NULL, |
NULL, |
@@ -184,7 +187,7 @@ |
{ |
"socks=foopy", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
NULL, |
NULL, |
@@ -196,7 +199,7 @@ |
{ |
"http=httpproxy ; https=httpsproxy ; ftp=ftpproxy ; socks=foopy ", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
"httpproxy:80", |
"httpsproxy:80", |
@@ -209,7 +212,7 @@ |
{ |
"http=httpproxy ; https=httpsproxy ; socks=socks5://foopy ", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
"httpproxy:80", |
"httpsproxy:80", |
@@ -221,7 +224,7 @@ |
{ |
"crazy=foopy ; foo=bar ; https=myhttpsproxy", |
- net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
NULL, |
NULL, |
"myhttpsproxy:80", |
@@ -230,7 +233,7 @@ |
}, |
}; |
- net::ProxyConfig config; |
+ ProxyConfig config; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
config.proxy_rules.ParseFromString(tests[i].proxy_rules); |
@@ -273,11 +276,130 @@ |
} |
}; |
- net::ProxyConfig config; |
+ ProxyConfig config; |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
config.ParseNoProxyList(tests[i].proxy_bypass_input); |
EXPECT_EQ(tests[i].flattened_output, |
- net::FlattenProxyBypass(config.proxy_bypass)); |
+ FlattenProxyBypass(config.proxy_bypass)); |
} |
} |
+ |
+std::string ProxyConfigToString(const ProxyConfig& config) { |
+ std::ostringstream stream; |
+ stream << config; |
+ return stream.str(); |
+} |
+ |
+TEST(ProxyConfigTest, ToString) { |
+ // Manual proxy. |
+ { |
+ ProxyConfig config; |
+ config.auto_detect = false; |
+ config.proxy_rules.ParseFromString("http://single-proxy:81"); |
+ |
+ EXPECT_EQ("Automatic settings:\n" |
+ " Auto-detect: No\n" |
+ " Custom PAC script: [None]\n" |
+ "Manual settings:\n" |
+ " Proxy server: single-proxy:81\n" |
+ " Bypass list: [None]\n" |
+ " Bypass local names: No", |
+ ProxyConfigToString(config)); |
+ } |
+ |
+ // Autodetect + custom PAC + manual proxy. |
+ { |
+ ProxyConfig config; |
+ config.auto_detect = true; |
+ config.pac_url = GURL("http://custom/pac.js"); |
+ config.proxy_rules.ParseFromString("http://single-proxy:81"); |
+ |
+ EXPECT_EQ("Automatic settings:\n" |
+ " Auto-detect: Yes\n" |
+ " Custom PAC script: http://custom/pac.js\n" |
+ "Manual settings:\n" |
+ " Proxy server: single-proxy:81\n" |
+ " Bypass list: [None]\n" |
+ " Bypass local names: No", |
+ ProxyConfigToString(config)); |
+ } |
+ |
+ // Manual proxy with bypass list + bypass local. |
+ { |
+ ProxyConfig config; |
+ config.auto_detect = false; |
+ config.proxy_rules.ParseFromString("http://single-proxy:81"); |
+ config.proxy_bypass.push_back("google.com"); |
+ config.proxy_bypass.push_back("bypass2.net:1730"); |
+ config.proxy_bypass_local_names = true; |
+ |
+ EXPECT_EQ("Automatic settings:\n" |
+ " Auto-detect: No\n" |
+ " Custom PAC script: [None]\n" |
+ "Manual settings:\n" |
+ " Proxy server: single-proxy:81\n" |
+ " Bypass list: \n" |
+ " google.com\n" |
+ " bypass2.net:1730\n" |
+ " Bypass local names: Yes", |
+ ProxyConfigToString(config)); |
+ } |
+ |
+ // Proxy-per scheme (HTTP and HTTPS) |
+ { |
+ ProxyConfig config; |
+ config.auto_detect = false; |
+ config.proxy_rules.ParseFromString( |
+ "http=proxy-for-http:1801; https=proxy-for-https:1802"); |
+ |
+ EXPECT_EQ("Automatic settings:\n" |
+ " Auto-detect: No\n" |
+ " Custom PAC script: [None]\n" |
+ "Manual settings:\n" |
+ " Proxy server: \n" |
+ " HTTP: proxy-for-http:1801\n" |
+ " HTTPS: proxy-for-https:1802\n" |
+ " Bypass list: [None]\n" |
+ " Bypass local names: No", |
+ ProxyConfigToString(config)); |
+ } |
+ |
+ // Proxy-per scheme (HTTP and SOCKS) |
+ { |
+ ProxyConfig config; |
+ config.auto_detect = false; |
+ config.proxy_rules.ParseFromString( |
+ "http=http://proxy-for-http:1801; socks=socks-server:6083"); |
+ |
+ EXPECT_EQ("Automatic settings:\n" |
+ " Auto-detect: No\n" |
+ " Custom PAC script: [None]\n" |
+ "Manual settings:\n" |
+ " Proxy server: \n" |
+ " HTTP: proxy-for-http:1801\n" |
+ " SOCKS: socks4://socks-server:6083\n" |
+ " Bypass list: [None]\n" |
+ " Bypass local names: No", |
+ ProxyConfigToString(config)); |
+ } |
+ |
+ // No proxy. |
+ { |
+ ProxyConfig config; |
+ config.auto_detect = false; |
+ |
+ EXPECT_EQ("Automatic settings:\n" |
+ " Auto-detect: No\n" |
+ " Custom PAC script: [None]\n" |
+ "Manual settings:\n" |
+ " Proxy server: [None]\n" |
+ " Bypass list: [None]\n" |
+ " Bypass local names: No", |
+ ProxyConfigToString(config)); |
+ } |
+} |
+ |
+} // namespace |
+} // namespace net |
+ |