proxy_config_service_common_unittest.h revision 731df977c0511bca2206b5f333555b1205ff1f43
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
15namespace net {
16
17// This structure contains our expectations on what values the ProxyRules
18// should have.
19struct 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