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