Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: net/proxy/proxy_config_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/proxy/proxy_config.h" 5 #include "net/proxy/proxy_config.h"
6 #include "net/proxy/proxy_config_service_common_unittest.h" 6 #include "net/proxy/proxy_config_service_common_unittest.h"
7 #include "net/proxy/proxy_info.h" 7 #include "net/proxy/proxy_info.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace net { 10 namespace net {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 const char* proxy_rules; 100 const char* proxy_rules;
101 101
102 ProxyConfig::ProxyRules::Type type; 102 ProxyConfig::ProxyRules::Type type;
103 // These will be PAC-stle strings, eg 'PROXY foo.com' 103 // These will be PAC-stle strings, eg 'PROXY foo.com'
104 const char* single_proxy; 104 const char* single_proxy;
105 const char* proxy_for_http; 105 const char* proxy_for_http;
106 const char* proxy_for_https; 106 const char* proxy_for_https;
107 const char* proxy_for_ftp; 107 const char* proxy_for_ftp;
108 const char* fallback_proxy; 108 const char* fallback_proxy;
109 } tests[] = { 109 } tests[] = {
110 // One HTTP proxy for all schemes. 110 // One HTTP proxy for all schemes.
111 { 111 {
112 "myproxy:80", 112 "myproxy:80", ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY,
113 "PROXY myproxy:80", NULL, NULL, NULL, NULL,
114 },
113 115
114 ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, 116 // Multiple HTTP proxies for all schemes.
115 "PROXY myproxy:80", 117 {
116 NULL, 118 "myproxy:80,https://myotherproxy",
117 NULL, 119 ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY,
118 NULL, 120 "PROXY myproxy:80;HTTPS myotherproxy:443", NULL, NULL, NULL, NULL,
119 NULL, 121 },
120 },
121 122
122 // Multiple HTTP proxies for all schemes. 123 // Only specify a proxy server for "http://" urls.
123 { 124 {
124 "myproxy:80,https://myotherproxy", 125 "http=myproxy:80", ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
126 NULL, "PROXY myproxy:80", NULL, NULL, NULL,
127 },
125 128
126 ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, 129 // Specify an HTTP proxy for "ftp://" and a SOCKS proxy for "https://"
127 "PROXY myproxy:80;HTTPS myotherproxy:443", 130 // urls.
128 NULL, 131 {
129 NULL, 132 "ftp=ftp-proxy ; https=socks4://foopy",
130 NULL, 133 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL, NULL,
131 NULL, 134 "SOCKS foopy:1080", "PROXY ftp-proxy:80", NULL,
132 }, 135 },
133 136
134 // Only specify a proxy server for "http://" urls. 137 // Give a scheme-specific proxy as well as a non-scheme specific.
135 { 138 // The first entry "foopy" takes precedance marking this list as
136 "http=myproxy:80", 139 // TYPE_SINGLE_PROXY.
140 {
141 "foopy ; ftp=ftp-proxy", ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY,
142 "PROXY foopy:80", NULL, NULL, NULL, NULL,
143 },
137 144
138 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, 145 // Give a scheme-specific proxy as well as a non-scheme specific.
139 NULL, 146 // The first entry "ftp=ftp-proxy" takes precedance marking this list as
140 "PROXY myproxy:80", 147 // TYPE_PROXY_PER_SCHEME.
141 NULL, 148 {
142 NULL, 149 "ftp=ftp-proxy ; foopy",
143 NULL, 150 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL, NULL, NULL,
144 }, 151 "PROXY ftp-proxy:80", NULL,
152 },
145 153
146 // Specify an HTTP proxy for "ftp://" and a SOCKS proxy for "https://" urls. 154 // Include a list of entries for a single scheme.
147 { 155 {
148 "ftp=ftp-proxy ; https=socks4://foopy", 156 "ftp=ftp1,ftp2,ftp3", ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
157 NULL, NULL, NULL, "PROXY ftp1:80;PROXY ftp2:80;PROXY ftp3:80", NULL,
158 },
149 159
150 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, 160 // Include multiple entries for the same scheme -- they accumulate.
151 NULL, 161 {
152 NULL, 162 "http=http1,http2; http=http3",
153 "SOCKS foopy:1080", 163 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
154 "PROXY ftp-proxy:80", 164 "PROXY http1:80;PROXY http2:80;PROXY http3:80", NULL, NULL, NULL,
155 NULL, 165 },
156 },
157 166
158 // Give a scheme-specific proxy as well as a non-scheme specific. 167 // Include lists of entries for multiple schemes.
159 // The first entry "foopy" takes precedance marking this list as 168 {
160 // TYPE_SINGLE_PROXY. 169 "ftp=ftp1,ftp2,ftp3 ; http=http1,http2; ",
161 { 170 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
162 "foopy ; ftp=ftp-proxy", 171 "PROXY http1:80;PROXY http2:80", NULL,
172 "PROXY ftp1:80;PROXY ftp2:80;PROXY ftp3:80", NULL,
173 },
163 174
164 ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, 175 // Include non-default proxy schemes.
165 "PROXY foopy:80", 176 {
166 NULL, 177 "http=https://secure_proxy; ftp=socks4://socks_proxy; "
167 NULL, 178 "https=socks://foo",
168 NULL, 179 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
169 NULL, 180 "HTTPS secure_proxy:443", "SOCKS5 foo:1080", "SOCKS socks_proxy:1080",
170 }, 181 NULL,
182 },
171 183
172 // Give a scheme-specific proxy as well as a non-scheme specific. 184 // Only SOCKS proxy present, others being blank.
173 // The first entry "ftp=ftp-proxy" takes precedance marking this list as 185 {
174 // TYPE_PROXY_PER_SCHEME. 186 "socks=foopy", ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
175 { 187 NULL, NULL, NULL, "SOCKS foopy:1080",
176 "ftp=ftp-proxy ; foopy", 188 },
177 189
178 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, 190 // SOCKS proxy present along with other proxies too
179 NULL, 191 {
180 NULL, 192 "http=httpproxy ; https=httpsproxy ; ftp=ftpproxy ; socks=foopy ",
181 NULL, 193 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
182 "PROXY ftp-proxy:80", 194 "PROXY httpproxy:80", "PROXY httpsproxy:80", "PROXY ftpproxy:80",
183 NULL, 195 "SOCKS foopy:1080",
184 }, 196 },
185 197
186 // Include a list of entries for a single scheme. 198 // SOCKS proxy (with modifier) present along with some proxies
187 { 199 // (FTP being blank)
188 "ftp=ftp1,ftp2,ftp3", 200 {
201 "http=httpproxy ; https=httpsproxy ; socks=socks5://foopy ",
202 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
203 "PROXY httpproxy:80", "PROXY httpsproxy:80", NULL, "SOCKS5 foopy:1080",
204 },
189 205
190 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, 206 // Include unsupported schemes -- they are discarded.
191 NULL, 207 {
192 NULL, 208 "crazy=foopy ; foo=bar ; https=myhttpsproxy",
193 NULL, 209 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL, NULL,
194 "PROXY ftp1:80;PROXY ftp2:80;PROXY ftp3:80", 210 "PROXY myhttpsproxy:80", NULL, NULL,
195 NULL, 211 },
196 },
197 212
198 // Include multiple entries for the same scheme -- they accumulate. 213 // direct:// as first option for a scheme.
199 { 214 {
200 "http=http1,http2; http=http3", 215 "http=direct://,myhttpproxy; https=direct://",
216 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
217 "DIRECT;PROXY myhttpproxy:80", "DIRECT", NULL, NULL,
218 },
201 219
202 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, 220 // direct:// as a second option for a scheme.
203 NULL, 221 {
204 "PROXY http1:80;PROXY http2:80;PROXY http3:80", 222 "http=myhttpproxy,direct://",
205 NULL, 223 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME, NULL,
206 NULL, 224 "PROXY myhttpproxy:80;DIRECT", NULL, NULL, NULL,
207 NULL, 225 },
208 }, 226 };
209
210 // Include lists of entries for multiple schemes.
211 {
212 "ftp=ftp1,ftp2,ftp3 ; http=http1,http2; ",
213
214 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
215 NULL,
216 "PROXY http1:80;PROXY http2:80",
217 NULL,
218 "PROXY ftp1:80;PROXY ftp2:80;PROXY ftp3:80",
219 NULL,
220 },
221
222 // Include non-default proxy schemes.
223 {
224 "http=https://secure_proxy; ftp=socks4://socks_proxy; https=socks://foo",
225
226 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
227 NULL,
228 "HTTPS secure_proxy:443",
229 "SOCKS5 foo:1080",
230 "SOCKS socks_proxy:1080",
231 NULL,
232 },
233
234 // Only SOCKS proxy present, others being blank.
235 {
236 "socks=foopy",
237
238 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
239 NULL,
240 NULL,
241 NULL,
242 NULL,
243 "SOCKS foopy:1080",
244 },
245
246 // SOCKS proxy present along with other proxies too
247 {
248 "http=httpproxy ; https=httpsproxy ; ftp=ftpproxy ; socks=foopy ",
249
250 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
251 NULL,
252 "PROXY httpproxy:80",
253 "PROXY httpsproxy:80",
254 "PROXY ftpproxy:80",
255 "SOCKS foopy:1080",
256 },
257
258 // SOCKS proxy (with modifier) present along with some proxies
259 // (FTP being blank)
260 {
261 "http=httpproxy ; https=httpsproxy ; socks=socks5://foopy ",
262
263 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
264 NULL,
265 "PROXY httpproxy:80",
266 "PROXY httpsproxy:80",
267 NULL,
268 "SOCKS5 foopy:1080",
269 },
270
271 // Include unsupported schemes -- they are discarded.
272 {
273 "crazy=foopy ; foo=bar ; https=myhttpsproxy",
274
275 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
276 NULL,
277 NULL,
278 "PROXY myhttpsproxy:80",
279 NULL,
280 NULL,
281 },
282
283 // direct:// as first option for a scheme.
284 {
285 "http=direct://,myhttpproxy; https=direct://",
286
287 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
288 NULL,
289 "DIRECT;PROXY myhttpproxy:80",
290 "DIRECT",
291 NULL,
292 NULL,
293 },
294
295 // direct:// as a second option for a scheme.
296 {
297 "http=myhttpproxy,direct://",
298
299 ProxyConfig::ProxyRules::TYPE_PROXY_PER_SCHEME,
300 NULL,
301 "PROXY myhttpproxy:80;DIRECT",
302 NULL,
303 NULL,
304 NULL,
305 },
306
307 };
308 227
309 ProxyConfig config; 228 ProxyConfig config;
310 229
311 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { 230 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
312 config.proxy_rules().ParseFromString(tests[i].proxy_rules); 231 config.proxy_rules().ParseFromString(tests[i].proxy_rules);
313 232
314 EXPECT_EQ(tests[i].type, config.proxy_rules().type); 233 EXPECT_EQ(tests[i].type, config.proxy_rules().type);
315 ExpectProxyServerEquals(tests[i].single_proxy, 234 ExpectProxyServerEquals(tests[i].single_proxy,
316 config.proxy_rules().single_proxies); 235 config.proxy_rules().single_proxies);
317 ExpectProxyServerEquals(tests[i].proxy_for_http, 236 ExpectProxyServerEquals(tests[i].proxy_for_http,
318 config.proxy_rules().proxies_for_http); 237 config.proxy_rules().proxies_for_http);
319 ExpectProxyServerEquals(tests[i].proxy_for_https, 238 ExpectProxyServerEquals(tests[i].proxy_for_https,
320 config.proxy_rules().proxies_for_https); 239 config.proxy_rules().proxies_for_https);
321 ExpectProxyServerEquals(tests[i].proxy_for_ftp, 240 ExpectProxyServerEquals(tests[i].proxy_for_ftp,
322 config.proxy_rules().proxies_for_ftp); 241 config.proxy_rules().proxies_for_ftp);
323 ExpectProxyServerEquals(tests[i].fallback_proxy, 242 ExpectProxyServerEquals(tests[i].fallback_proxy,
324 config.proxy_rules().fallback_proxies); 243 config.proxy_rules().fallback_proxies);
325 } 244 }
326 } 245 }
327 246
328 TEST(ProxyConfigTest, ProxyRulesSetBypassFlag) { 247 TEST(ProxyConfigTest, ProxyRulesSetBypassFlag) {
329 // Test whether the did_bypass_proxy() flag is set in proxy info correctly. 248 // Test whether the did_bypass_proxy() flag is set in proxy info correctly.
330 ProxyConfig::ProxyRules rules; 249 ProxyConfig::ProxyRules rules;
331 ProxyInfo result; 250 ProxyInfo result;
332 251
333 rules.ParseFromString("http=httpproxy:80"); 252 rules.ParseFromString("http=httpproxy:80");
334 rules.bypass_rules.AddRuleFromString(".com"); 253 rules.bypass_rules.AddRuleFromString(".com");
335 254
336 rules.Apply(GURL("http://example.com"), &result); 255 rules.Apply(GURL("http://example.com"), &result);
337 EXPECT_TRUE(result.is_direct_only()); 256 EXPECT_TRUE(result.is_direct_only());
338 EXPECT_TRUE(result.did_bypass_proxy()); 257 EXPECT_TRUE(result.did_bypass_proxy());
339 258
340 rules.Apply(GURL("http://example.org"), &result); 259 rules.Apply(GURL("http://example.org"), &result);
341 EXPECT_FALSE(result.is_direct()); 260 EXPECT_FALSE(result.is_direct());
342 EXPECT_FALSE(result.did_bypass_proxy()); 261 EXPECT_FALSE(result.did_bypass_proxy());
343 262
344 // Try with reversed bypass rules. 263 // Try with reversed bypass rules.
345 rules.reverse_bypass = true; 264 rules.reverse_bypass = true;
346 265
347 rules.Apply(GURL("http://example.org"), &result); 266 rules.Apply(GURL("http://example.org"), &result);
348 EXPECT_TRUE(result.is_direct_only()); 267 EXPECT_TRUE(result.is_direct_only());
349 EXPECT_TRUE(result.did_bypass_proxy()); 268 EXPECT_TRUE(result.did_bypass_proxy());
350 269
351 rules.Apply(GURL("http://example.com"), &result); 270 rules.Apply(GURL("http://example.com"), &result);
352 EXPECT_FALSE(result.is_direct()); 271 EXPECT_FALSE(result.is_direct());
353 EXPECT_FALSE(result.did_bypass_proxy()); 272 EXPECT_FALSE(result.did_bypass_proxy());
354 } 273 }
355 274
356 } // namespace 275 } // namespace
357 } // namespace net 276 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698