| Index: net/proxy/proxy_config_unittest.cc
|
| diff --git a/net/proxy/proxy_config_unittest.cc b/net/proxy/proxy_config_unittest.cc
|
| deleted file mode 100644
|
| index 1554419608680f3c9d36c255355c9a4813f0a7ad..0000000000000000000000000000000000000000
|
| --- a/net/proxy/proxy_config_unittest.cc
|
| +++ /dev/null
|
| @@ -1,428 +0,0 @@
|
| -// Copyright (c) 2012 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 "net/proxy/proxy_config_service_common_unittest.h"
|
| -#include "net/proxy/proxy_info.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace net {
|
| -namespace {
|
| -
|
| -void ExpectProxyServerEquals(const char* expectation,
|
| - const ProxyList& proxy_servers) {
|
| - if (expectation == NULL) {
|
| - EXPECT_TRUE(proxy_servers.IsEmpty());
|
| - } else {
|
| - EXPECT_EQ(expectation, proxy_servers.ToPacString());
|
| - }
|
| -}
|
| -
|
| -TEST(ProxyConfigTest, Equals) {
|
| - // Test |ProxyConfig::auto_detect|.
|
| -
|
| - ProxyConfig config1;
|
| - config1.set_auto_detect(true);
|
| -
|
| - ProxyConfig config2;
|
| - config2.set_auto_detect(false);
|
| -
|
| - EXPECT_FALSE(config1.Equals(config2));
|
| - EXPECT_FALSE(config2.Equals(config1));
|
| -
|
| - config2.set_auto_detect(true);
|
| -
|
| - EXPECT_TRUE(config1.Equals(config2));
|
| - EXPECT_TRUE(config2.Equals(config1));
|
| -
|
| - // Test |ProxyConfig::pac_url|.
|
| -
|
| - config2.set_pac_url(GURL("http://wpad/wpad.dat"));
|
| -
|
| - EXPECT_FALSE(config1.Equals(config2));
|
| - EXPECT_FALSE(config2.Equals(config1));
|
| -
|
| - config1.set_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 = ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY;
|
| - config2.proxy_rules().single_proxies.SetSingleProxyServer(
|
| - ProxyServer::FromURI("myproxy:80", ProxyServer::SCHEME_HTTP));
|
| -
|
| - EXPECT_FALSE(config1.Equals(config2));
|
| - EXPECT_FALSE(config2.Equals(config1));
|
| -
|
| - config1.proxy_rules().type = ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY;
|
| - config1.proxy_rules().single_proxies.SetSingleProxyServer(
|
| - ProxyServer::FromURI("myproxy:100", ProxyServer::SCHEME_HTTP));
|
| -
|
| - EXPECT_FALSE(config1.Equals(config2));
|
| - EXPECT_FALSE(config2.Equals(config1));
|
| -
|
| - config1.proxy_rules().single_proxies.SetSingleProxyServer(
|
| - ProxyServer::FromURI("myproxy", ProxyServer::SCHEME_HTTP));
|
| -
|
| - EXPECT_TRUE(config1.Equals(config2));
|
| - EXPECT_TRUE(config2.Equals(config1));
|
| -
|
| - // Test |ProxyConfig::bypass_rules|.
|
| -
|
| - config2.proxy_rules().bypass_rules.AddRuleFromString("*.google.com");
|
| -
|
| - EXPECT_FALSE(config1.Equals(config2));
|
| - EXPECT_FALSE(config2.Equals(config1));
|
| -
|
| - config1.proxy_rules().bypass_rules.AddRuleFromString("*.google.com");
|
| -
|
| - EXPECT_TRUE(config1.Equals(config2));
|
| - EXPECT_TRUE(config2.Equals(config1));
|
| -
|
| - // Test |ProxyConfig::proxy_rules.reverse_bypass|.
|
| -
|
| - config2.proxy_rules().reverse_bypass = true;
|
| -
|
| - EXPECT_FALSE(config1.Equals(config2));
|
| - EXPECT_FALSE(config2.Equals(config1));
|
| -
|
| - config1.proxy_rules().reverse_bypass = true;
|
| -
|
| - EXPECT_TRUE(config1.Equals(config2));
|
| - EXPECT_TRUE(config2.Equals(config1));
|
| -}
|
| -
|
| -TEST(ProxyConfigTest, ParseProxyRules) {
|
| - const struct {
|
| - const char* proxy_rules;
|
| -
|
| - ProxyConfig::ProxyRules::Type type;
|
| - // These will be PAC-stle strings, eg 'PROXY foo.com'
|
| - const char* single_proxy;
|
| - const char* proxy_for_http;
|
| - const char* proxy_for_https;
|
| - const char* proxy_for_ftp;
|
| - const char* fallback_proxy;
|
| - } tests[] = {
|
| - // One HTTP proxy for all schemes.
|
| - {
|
| - "myproxy:80",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY,
|
| - "PROXY myproxy:80",
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - // Multiple HTTP proxies for all schemes.
|
| - {
|
| - "myproxy:80,https://myotherproxy",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY,
|
| - "PROXY myproxy:80;HTTPS myotherproxy:443",
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - // Only specify a proxy server for "http://" urls.
|
| - {
|
| - "http=myproxy:80",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "PROXY myproxy:80",
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - // Specify an HTTP proxy for "ftp://" and a SOCKS proxy for "https://" urls.
|
| - {
|
| - "ftp=ftp-proxy ; https=socks4://foopy",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - NULL,
|
| - "SOCKS foopy:1080",
|
| - "PROXY ftp-proxy:80",
|
| - NULL,
|
| - },
|
| -
|
| - // 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",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY,
|
| - "PROXY foopy:80",
|
| - NULL,
|
| - 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",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - "PROXY ftp-proxy:80",
|
| - NULL,
|
| - },
|
| -
|
| - // Include a list of entries for a single scheme.
|
| - {
|
| - "ftp=ftp1,ftp2,ftp3",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - "PROXY ftp1:80;PROXY ftp2:80;PROXY ftp3:80",
|
| - NULL,
|
| - },
|
| -
|
| - // Include multiple entries for the same scheme -- they accumulate.
|
| - {
|
| - "http=http1,http2; http=http3",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "PROXY http1:80;PROXY http2:80;PROXY http3:80",
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - // Include lists of entries for multiple schemes.
|
| - {
|
| - "ftp=ftp1,ftp2,ftp3 ; http=http1,http2; ",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "PROXY http1:80;PROXY http2:80",
|
| - NULL,
|
| - "PROXY ftp1:80;PROXY ftp2:80;PROXY ftp3:80",
|
| - NULL,
|
| - },
|
| -
|
| - // Include non-default proxy schemes.
|
| - {
|
| - "http=https://secure_proxy; ftp=socks4://socks_proxy; https=socks://foo",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "HTTPS secure_proxy:443",
|
| - "SOCKS5 foo:1080",
|
| - "SOCKS socks_proxy:1080",
|
| - NULL,
|
| - },
|
| -
|
| - // Only SOCKS proxy present, others being blank.
|
| - {
|
| - "socks=foopy",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - "SOCKS foopy:1080",
|
| - },
|
| -
|
| - // SOCKS proxy present along with other proxies too
|
| - {
|
| - "http=httpproxy ; https=httpsproxy ; ftp=ftpproxy ; socks=foopy ",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "PROXY httpproxy:80",
|
| - "PROXY httpsproxy:80",
|
| - "PROXY ftpproxy:80",
|
| - "SOCKS foopy:1080",
|
| - },
|
| -
|
| - // SOCKS proxy (with modifier) present along with some proxies
|
| - // (FTP being blank)
|
| - {
|
| - "http=httpproxy ; https=httpsproxy ; socks=socks5://foopy ",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "PROXY httpproxy:80",
|
| - "PROXY httpsproxy:80",
|
| - NULL,
|
| - "SOCKS5 foopy:1080",
|
| - },
|
| -
|
| - // Include unsupported schemes -- they are discarded.
|
| - {
|
| - "crazy=foopy ; foo=bar ; https=myhttpsproxy",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - NULL,
|
| - "PROXY myhttpsproxy:80",
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - // direct:// as first option for a scheme.
|
| - {
|
| - "http=direct://,myhttpproxy; https=direct://",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "DIRECT;PROXY myhttpproxy:80",
|
| - "DIRECT",
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - // direct:// as a second option for a scheme.
|
| - {
|
| - "http=myhttpproxy,direct://",
|
| -
|
| - ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
|
| - NULL,
|
| - "PROXY myhttpproxy:80;DIRECT",
|
| - NULL,
|
| - NULL,
|
| - NULL,
|
| - },
|
| -
|
| - };
|
| -
|
| - ProxyConfig config;
|
| -
|
| - for (size_t i = 0; i < arraysize(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_proxies);
|
| - ExpectProxyServerEquals(tests[i].proxy_for_http,
|
| - config.proxy_rules().proxies_for_http);
|
| - ExpectProxyServerEquals(tests[i].proxy_for_https,
|
| - config.proxy_rules().proxies_for_https);
|
| - ExpectProxyServerEquals(tests[i].proxy_for_ftp,
|
| - config.proxy_rules().proxies_for_ftp);
|
| - ExpectProxyServerEquals(tests[i].fallback_proxy,
|
| - config.proxy_rules().fallback_proxies);
|
| - }
|
| -}
|
| -
|
| -TEST(ProxyConfigTest, ProxyRulesSetBypassFlag) {
|
| - // Test whether the did_bypass_proxy() flag is set in proxy info correctly.
|
| - ProxyConfig::ProxyRules rules;
|
| - ProxyInfo result;
|
| -
|
| - rules.ParseFromString("http=httpproxy:80");
|
| - rules.bypass_rules.AddRuleFromString(".com");
|
| -
|
| - rules.Apply(GURL("http://example.com"), &result);
|
| - EXPECT_TRUE(result.is_direct_only());
|
| - EXPECT_TRUE(result.did_bypass_proxy());
|
| -
|
| - rules.Apply(GURL("http://example.org"), &result);
|
| - EXPECT_FALSE(result.is_direct());
|
| - EXPECT_FALSE(result.did_bypass_proxy());
|
| -
|
| - // Try with reversed bypass rules.
|
| - rules.reverse_bypass = true;
|
| -
|
| - rules.Apply(GURL("http://example.org"), &result);
|
| - EXPECT_TRUE(result.is_direct_only());
|
| - EXPECT_TRUE(result.did_bypass_proxy());
|
| -
|
| - rules.Apply(GURL("http://example.com"), &result);
|
| - EXPECT_FALSE(result.is_direct());
|
| - EXPECT_FALSE(result.did_bypass_proxy());
|
| -}
|
| -
|
| -static const char kWsUrl[] = "ws://example.com/echo";
|
| -static const char kWssUrl[] = "wss://example.com/echo";
|
| -
|
| -class ProxyConfigWebSocketTest : public ::testing::Test {
|
| - protected:
|
| - void ParseFromString(const std::string& rules) {
|
| - rules_.ParseFromString(rules);
|
| - }
|
| - void Apply(const GURL& gurl) { rules_.Apply(gurl, &info_); }
|
| - std::string ToPacString() const { return info_.ToPacString(); }
|
| -
|
| - static GURL WsUrl() { return GURL(kWsUrl); }
|
| - static GURL WssUrl() { return GURL(kWssUrl); }
|
| -
|
| - ProxyConfig::ProxyRules rules_;
|
| - ProxyInfo info_;
|
| -};
|
| -
|
| -// If a single proxy is set for all protocols, WebSocket uses it.
|
| -TEST_F(ProxyConfigWebSocketTest, UsesProxy) {
|
| - ParseFromString("proxy:3128");
|
| - Apply(WsUrl());
|
| - EXPECT_EQ("PROXY proxy:3128", ToPacString());
|
| -}
|
| -
|
| -// See RFC6455 Section 4.1. item 3, "_Proxy Usage_".
|
| -TEST_F(ProxyConfigWebSocketTest, PrefersSocks) {
|
| - ParseFromString(
|
| - "http=proxy:3128 ; https=sslproxy:3128 ; socks=socksproxy:1080");
|
| - Apply(WsUrl());
|
| - EXPECT_EQ("SOCKS socksproxy:1080", ToPacString());
|
| -}
|
| -
|
| -TEST_F(ProxyConfigWebSocketTest, PrefersHttpsToHttp) {
|
| - ParseFromString("http=proxy:3128 ; https=sslproxy:3128");
|
| - Apply(WssUrl());
|
| - EXPECT_EQ("PROXY sslproxy:3128", ToPacString());
|
| -}
|
| -
|
| -TEST_F(ProxyConfigWebSocketTest, PrefersHttpsEvenForWs) {
|
| - ParseFromString("http=proxy:3128 ; https=sslproxy:3128");
|
| - Apply(WsUrl());
|
| - EXPECT_EQ("PROXY sslproxy:3128", ToPacString());
|
| -}
|
| -
|
| -TEST_F(ProxyConfigWebSocketTest, PrefersHttpToDirect) {
|
| - ParseFromString("http=proxy:3128");
|
| - Apply(WssUrl());
|
| - EXPECT_EQ("PROXY proxy:3128", ToPacString());
|
| -}
|
| -
|
| -TEST_F(ProxyConfigWebSocketTest, IgnoresFtpProxy) {
|
| - ParseFromString("ftp=ftpproxy:3128");
|
| - Apply(WssUrl());
|
| - EXPECT_EQ("DIRECT", ToPacString());
|
| -}
|
| -
|
| -TEST_F(ProxyConfigWebSocketTest, ObeysBypassRules) {
|
| - ParseFromString("http=proxy:3128 ; https=sslproxy:3128");
|
| - rules_.bypass_rules.AddRuleFromString(".chromium.org");
|
| - Apply(GURL("wss://codereview.chromium.org/feed"));
|
| - EXPECT_EQ("DIRECT", ToPacString());
|
| -}
|
| -
|
| -TEST_F(ProxyConfigWebSocketTest, ObeysLocalBypass) {
|
| - ParseFromString("http=proxy:3128 ; https=sslproxy:3128");
|
| - rules_.bypass_rules.AddRuleFromString("<local>");
|
| - Apply(GURL("ws://localhost/feed"));
|
| - EXPECT_EQ("DIRECT", ToPacString());
|
| -}
|
| -
|
| -} // namespace
|
| -} // namespace net
|
|
|