Index: net/proxy/proxy_config_unittest.cc |
=================================================================== |
--- net/proxy/proxy_config_unittest.cc (revision 0) |
+++ net/proxy/proxy_config_unittest.cc (revision 0) |
@@ -0,0 +1,199 @@ |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "net/proxy/proxy_config.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+static void ExpectProxyServerEquals(const char* expectation, |
+ const net::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; |
+ config1.auto_detect = true; |
+ |
+ net::ProxyConfig config2; |
+ config2.auto_detect = false; |
+ |
+ EXPECT_FALSE(config1.Equals(config2)); |
+ EXPECT_FALSE(config2.Equals(config1)); |
+ |
+ config2.auto_detect = true; |
+ |
+ EXPECT_TRUE(config1.Equals(config2)); |
+ EXPECT_TRUE(config2.Equals(config1)); |
+ |
+ // Test |ProxyConfig::pac_url|. |
+ |
+ config2.pac_url = GURL("http://wpad/wpad.dat"); |
+ |
+ EXPECT_FALSE(config1.Equals(config2)); |
+ EXPECT_FALSE(config2.Equals(config1)); |
+ |
+ config1.pac_url = GURL("http://wpad/wpad.dat"); |
+ |
+ EXPECT_TRUE(config1.Equals(config2)); |
+ EXPECT_TRUE(config2.Equals(config1)); |
+ |
+ // Test |ProxyConfig::proxy_rules|. |
+ |
+ config2.proxy_rules.type = net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
+ config2.proxy_rules.single_proxy = net::ProxyServer::FromURI("myproxy:80"); |
+ |
+ EXPECT_FALSE(config1.Equals(config2)); |
+ EXPECT_FALSE(config2.Equals(config1)); |
+ |
+ config1.proxy_rules.type = net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY; |
+ config1.proxy_rules.single_proxy = net::ProxyServer::FromURI("myproxy:100"); |
+ |
+ EXPECT_FALSE(config1.Equals(config2)); |
+ EXPECT_FALSE(config2.Equals(config1)); |
+ |
+ config1.proxy_rules.single_proxy = net::ProxyServer::FromURI("myproxy"); |
+ |
+ EXPECT_TRUE(config1.Equals(config2)); |
+ EXPECT_TRUE(config2.Equals(config1)); |
+ |
+ // Test |ProxyConfig::proxy_bypass|. |
+ |
+ config2.proxy_bypass.push_back("*.google.com"); |
+ |
+ EXPECT_FALSE(config1.Equals(config2)); |
+ EXPECT_FALSE(config2.Equals(config1)); |
+ |
+ config1.proxy_bypass.push_back("*.google.com"); |
+ |
+ EXPECT_TRUE(config1.Equals(config2)); |
+ EXPECT_TRUE(config2.Equals(config1)); |
+ |
+ // Test |ProxyConfig::proxy_bypass_local_names|. |
+ |
+ config1.proxy_bypass_local_names = true; |
+ |
+ EXPECT_FALSE(config1.Equals(config2)); |
+ EXPECT_FALSE(config2.Equals(config1)); |
+ |
+ config2.proxy_bypass_local_names = true; |
+ |
+ EXPECT_TRUE(config1.Equals(config2)); |
+ EXPECT_TRUE(config2.Equals(config1)); |
+} |
+ |
+TEST(ProxyConfigTest, ParseProxyRules) { |
+ const struct { |
+ const char* proxy_rules; |
+ |
+ net::ProxyConfig::ProxyRules::Type type; |
+ const char* single_proxy; |
+ const char* proxy_for_http; |
+ const char* proxy_for_https; |
+ const char* proxy_for_ftp; |
+ } tests[] = { |
+ // One HTTP proxy for all schemes. |
+ { |
+ "myproxy:80", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
+ "myproxy:80", |
+ NULL, |
+ NULL, |
+ NULL, |
+ }, |
+ |
+ // Only specify a proxy server for "http://" urls. |
+ { |
+ "http=myproxy:80", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ NULL, |
+ "myproxy:80", |
+ NULL, |
+ NULL, |
+ }, |
+ |
+ // Specify an HTTP proxy for "ftp://" and a SOCKS proxy for "https://" urls. |
+ { |
+ "ftp=ftp-proxy ; https=socks4://foopy", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ NULL, |
+ NULL, |
+ "socks4://foopy:1080", |
+ "ftp-proxy:80", |
+ }, |
+ |
+ // Give a scheme-specific proxy as well as a non-scheme specific. |
+ // The first entry "foopy" takes precedance marking this list as |
+ // TYPE_SINGLE_PROXY. |
+ { |
+ "foopy ; ftp=ftp-proxy", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
+ "foopy:80", |
+ NULL, |
+ NULL, |
+ NULL, |
+ }, |
+ |
+ // Give a scheme-specific proxy as well as a non-scheme specific. |
+ // The first entry "ftp=ftp-proxy" takes precedance marking this list as |
+ // TYPE_PROXY_PER_SCHEME. |
+ { |
+ "ftp=ftp-proxy ; foopy", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ NULL, |
+ NULL, |
+ NULL, |
+ "ftp-proxy:80", |
+ }, |
+ |
+ // Include duplicate entries -- last one wins. |
+ { |
+ "ftp=ftp1 ; ftp=ftp2 ; ftp=ftp3", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ NULL, |
+ NULL, |
+ NULL, |
+ "ftp3:80", |
+ }, |
+ |
+ // Include unsupported schemes -- they are discarded. |
+ { |
+ "crazy=foopy ; foo=bar ; https=myhttpsproxy", |
+ |
+ net::ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, |
+ NULL, |
+ NULL, |
+ "myhttpsproxy:80", |
+ NULL, |
+ }, |
+ }; |
+ |
+ net::ProxyConfig config; |
+ |
+ for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
+ config.proxy_rules.ParseFromString(tests[i].proxy_rules); |
+ |
+ EXPECT_EQ(tests[i].type, config.proxy_rules.type); |
+ ExpectProxyServerEquals(tests[i].single_proxy, |
+ config.proxy_rules.single_proxy); |
+ ExpectProxyServerEquals(tests[i].proxy_for_http, |
+ config.proxy_rules.proxy_for_http); |
+ ExpectProxyServerEquals(tests[i].proxy_for_https, |
+ config.proxy_rules.proxy_for_https); |
+ ExpectProxyServerEquals(tests[i].proxy_for_ftp, |
+ config.proxy_rules.proxy_for_ftp); |
+ } |
+} |
Property changes on: net\proxy\proxy_config_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |