Home | History | Annotate | Download | only in proxy
      1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef NET_PROXY_PROXY_CONFIG_SERVICE_COMMON_UNITTEST_H_
      6 #define NET_PROXY_PROXY_CONFIG_SERVICE_COMMON_UNITTEST_H_
      7 
      8 #include "net/proxy/proxy_config.h"
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 // Helper functions to describe the expected value of a
     12 // ProxyConfig::ProxyRules, and to check for a match.
     13 
     14 namespace net {
     15 
     16 // This structure contains our expectations on what values the ProxyRules
     17 // should have.
     18 struct ProxyRulesExpectation {
     19   ProxyRulesExpectation(ProxyConfig::ProxyRules::Type type,
     20                         const char* single_proxy,
     21                         const char* proxy_for_http,
     22                         const char* proxy_for_https,
     23                         const char* proxy_for_ftp,
     24                         const char* fallback_proxy,
     25                         const char* flattened_bypass_rules,
     26                         bool reverse_bypass);
     27 
     28   // Call this within an EXPECT_TRUE(), to assert that |rules| matches
     29   // our expected values |*this|.
     30   ::testing::AssertionResult Matches(
     31       const ProxyConfig::ProxyRules& rules) const;
     32 
     33   // Creates an expectation that the ProxyRules has no rules.
     34   static ProxyRulesExpectation Empty();
     35 
     36   // Creates an expectation that the ProxyRules has nothing other than
     37   // the specified bypass rules.
     38   static ProxyRulesExpectation EmptyWithBypass(
     39       const char* flattened_bypass_rules);
     40 
     41   // Creates an expectation that the ProxyRules is for a single proxy
     42   // server for all schemes.
     43   static ProxyRulesExpectation Single(const char* single_proxy,
     44                                       const char* flattened_bypass_rules);
     45 
     46   // Creates an expectation that the ProxyRules specifies a different
     47   // proxy server for each URL scheme.
     48   static ProxyRulesExpectation PerScheme(const char* proxy_http,
     49                                          const char* proxy_https,
     50                                          const char* proxy_ftp,
     51                                          const char* flattened_bypass_rules);
     52 
     53   // Same as above, but additionally with a SOCKS fallback.
     54   static ProxyRulesExpectation PerSchemeWithSocks(
     55       const char* proxy_http,
     56       const char* proxy_https,
     57       const char* proxy_ftp,
     58       const char* fallback_proxy,
     59       const char* flattened_bypass_rules);
     60 
     61   // Same as PerScheme, but with the bypass rules reversed
     62   static ProxyRulesExpectation PerSchemeWithBypassReversed(
     63       const char* proxy_http,
     64       const char* proxy_https,
     65       const char* proxy_ftp,
     66       const char* flattened_bypass_rules);
     67 
     68   ProxyConfig::ProxyRules::Type type;
     69   const char* single_proxy;
     70   const char* proxy_for_http;
     71   const char* proxy_for_https;
     72   const char* proxy_for_ftp;
     73   const char* fallback_proxy;
     74   const char* flattened_bypass_rules;
     75   bool reverse_bypass;
     76 };
     77 
     78 }  // namespace net
     79 
     80 #endif  // NET_PROXY_PROXY_CONFIG_SERVICE_COMMON_UNITTEST_H_
     81