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