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