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

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

Issue 15070: Split ProxyResolver into two interfaces:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years 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
« no previous file with comments | « net/proxy/proxy_service.cc ('k') | net/url_request/url_request_unittest.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "googleurl/src/gurl.h" 5 #include "googleurl/src/gurl.h"
6 #include "net/base/net_errors.h" 6 #include "net/base/net_errors.h"
7 #include "net/proxy/proxy_service.h" 7 #include "net/proxy/proxy_service.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace { 10 namespace {
11 11
12 // TODO(eroman): get rid of synchronous usages of ProxyService::ResolveProxy().
13
14 class MockProxyConfigService: public net::ProxyConfigService {
15 public:
16 MockProxyConfigService() {} // Direct connect.
17 explicit MockProxyConfigService(const net::ProxyConfig& pc) : config(pc) {}
18 explicit MockProxyConfigService(const std::string& pac_url) {
19 config.pac_url = GURL(pac_url);
20 }
21
22 virtual int GetProxyConfig(net::ProxyConfig* results) {
23 *results = config;
24 return net::OK;
25 }
26
27 net::ProxyConfig config;
28 };
29
12 class MockProxyResolver : public net::ProxyResolver { 30 class MockProxyResolver : public net::ProxyResolver {
13 public: 31 public:
14 MockProxyResolver() : fail_get_proxy_for_url(false) { 32 MockProxyResolver() : fail_get_proxy_for_url(false) {
15 } 33 }
16 // Init the MockProxyResolver with the specified ProxyConfig. 34
17 explicit MockProxyResolver(const net::ProxyConfig& c) : config(c) {
18 }
19 virtual int GetProxyConfig(net::ProxyConfig* results) {
20 *results = config;
21 return net::OK;
22 }
23 virtual int GetProxyForURL(const GURL& query_url, 35 virtual int GetProxyForURL(const GURL& query_url,
24 const GURL& pac_url, 36 const GURL& pac_url,
25 net::ProxyInfo* results) { 37 net::ProxyInfo* results) {
26 if (pac_url != config.pac_url)
27 return net::ERR_INVALID_ARGUMENT;
28 if (fail_get_proxy_for_url) 38 if (fail_get_proxy_for_url)
29 return net::ERR_FAILED; 39 return net::ERR_FAILED;
30 if (GURL(query_url).host() == info_predicate_query_host) { 40 if (GURL(query_url).host() == info_predicate_query_host) {
31 results->Use(info); 41 results->Use(info);
32 } else { 42 } else {
33 results->UseDirect(); 43 results->UseDirect();
34 } 44 }
35 return net::OK; 45 return net::OK;
36 } 46 }
37 net::ProxyConfig config; 47
38 net::ProxyInfo info; 48 net::ProxyInfo info;
39 49
40 // info is only returned if query_url in GetProxyForURL matches this: 50 // info is only returned if query_url in GetProxyForURL matches this:
41 std::string info_predicate_query_host; 51 std::string info_predicate_query_host;
42 52
43 // If true, then GetProxyForURL will fail, which simulates failure to 53 // If true, then GetProxyForURL will fail, which simulates failure to
44 // download or execute the PAC file. 54 // download or execute the PAC file.
45 bool fail_get_proxy_for_url; 55 bool fail_get_proxy_for_url;
46 }; 56 };
47 57
48 } // namespace 58 } // namespace
49 59
50 // GetAnnotatedList() is used to generate a string for mozilla's GetProxyForUrl 60 // GetAnnotatedList() is used to generate a string for mozilla's GetProxyForUrl
51 // NPAPI extension. Check that it adheres to the expected format. 61 // NPAPI extension. Check that it adheres to the expected format.
52 TEST(ProxyListTest, GetAnnotatedList) { 62 TEST(ProxyListTest, GetAnnotatedList) {
53 net::ProxyList proxy_list; 63 net::ProxyList proxy_list;
54 64
55 std::vector<std::string> proxies; 65 std::vector<std::string> proxies;
56 proxies.push_back("www.first.com:80"); 66 proxies.push_back("www.first.com:80");
57 proxies.push_back("www.second.com:80"); 67 proxies.push_back("www.second.com:80");
58 proxy_list.SetVector(proxies); 68 proxy_list.SetVector(proxies);
59 69
60 EXPECT_EQ(std::string("PROXY www.first.com:80;PROXY www.second.com:80"), 70 EXPECT_EQ(std::string("PROXY www.first.com:80;PROXY www.second.com:80"),
61 proxy_list.GetAnnotatedList()); 71 proxy_list.GetAnnotatedList());
62 } 72 }
63 73
64 TEST(ProxyServiceTest, Direct) { 74 TEST(ProxyServiceTest, Direct) {
65 net::ProxyService service(new MockProxyResolver); 75 net::ProxyService service(new MockProxyConfigService,
76 new MockProxyResolver);
66 77
67 GURL url("http://www.google.com/"); 78 GURL url("http://www.google.com/");
68 79
69 net::ProxyInfo info; 80 net::ProxyInfo info;
70 int rv = service.ResolveProxy(url, &info, NULL, NULL); 81 int rv = service.ResolveProxy(url, &info, NULL, NULL);
71 EXPECT_EQ(rv, net::OK); 82 EXPECT_EQ(rv, net::OK);
72 EXPECT_TRUE(info.is_direct()); 83 EXPECT_TRUE(info.is_direct());
73 } 84 }
74 85
75 TEST(ProxyServiceTest, PAC) { 86 TEST(ProxyServiceTest, PAC) {
87 MockProxyConfigService* config_service =
88 new MockProxyConfigService("http://foopy/proxy.pac");
89
76 MockProxyResolver* resolver = new MockProxyResolver; 90 MockProxyResolver* resolver = new MockProxyResolver;
77 resolver->config.pac_url = GURL("http://foopy/proxy.pac");
78 resolver->info.UseNamedProxy("foopy"); 91 resolver->info.UseNamedProxy("foopy");
79 resolver->info_predicate_query_host = "www.google.com"; 92 resolver->info_predicate_query_host = "www.google.com";
80 93
81 net::ProxyService service(resolver); 94 net::ProxyService service(config_service, resolver);
82 95
83 GURL url("http://www.google.com/"); 96 GURL url("http://www.google.com/");
84 97
85 net::ProxyInfo info; 98 net::ProxyInfo info;
86 int rv = service.ResolveProxy(url, &info, NULL, NULL); 99 int rv = service.ResolveProxy(url, &info, NULL, NULL);
87 EXPECT_EQ(rv, net::OK); 100 EXPECT_EQ(rv, net::OK);
88 EXPECT_FALSE(info.is_direct()); 101 EXPECT_FALSE(info.is_direct());
89 EXPECT_EQ(info.proxy_server(), "foopy"); 102 EXPECT_EQ(info.proxy_server(), "foopy");
90 } 103 }
91 104
92 TEST(ProxyServiceTest, PAC_FailoverToDirect) { 105 TEST(ProxyServiceTest, PAC_FailoverToDirect) {
106 MockProxyConfigService* config_service =
107 new MockProxyConfigService("http://foopy/proxy.pac");
108
93 MockProxyResolver* resolver = new MockProxyResolver; 109 MockProxyResolver* resolver = new MockProxyResolver;
94 resolver->config.pac_url = GURL("http://foopy/proxy.pac");
95 resolver->info.UseNamedProxy("foopy:8080"); 110 resolver->info.UseNamedProxy("foopy:8080");
96 resolver->info_predicate_query_host = "www.google.com"; 111 resolver->info_predicate_query_host = "www.google.com";
97 112
98 net::ProxyService service(resolver); 113 net::ProxyService service(config_service, resolver);
99 114
100 GURL url("http://www.google.com/"); 115 GURL url("http://www.google.com/");
101 116
102 net::ProxyInfo info; 117 net::ProxyInfo info;
103 int rv = service.ResolveProxy(url, &info, NULL, NULL); 118 int rv = service.ResolveProxy(url, &info, NULL, NULL);
104 EXPECT_EQ(rv, net::OK); 119 EXPECT_EQ(rv, net::OK);
105 EXPECT_FALSE(info.is_direct()); 120 EXPECT_FALSE(info.is_direct());
106 EXPECT_EQ(info.proxy_server(), "foopy:8080"); 121 EXPECT_EQ(info.proxy_server(), "foopy:8080");
107 122
108 // Now, imagine that connecting to foopy:8080 fails. 123 // Now, imagine that connecting to foopy:8080 fails.
109 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 124 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
110 EXPECT_EQ(rv, net::OK); 125 EXPECT_EQ(rv, net::OK);
111 EXPECT_TRUE(info.is_direct()); 126 EXPECT_TRUE(info.is_direct());
112 } 127 }
113 128
114 TEST(ProxyServiceTest, PAC_FailsToDownload) { 129 TEST(ProxyServiceTest, PAC_FailsToDownload) {
115 // Test what happens when we fail to download the PAC URL. 130 // Test what happens when we fail to download the PAC URL.
116 131
132 MockProxyConfigService* config_service =
133 new MockProxyConfigService("http://foopy/proxy.pac");
134
117 MockProxyResolver* resolver = new MockProxyResolver; 135 MockProxyResolver* resolver = new MockProxyResolver;
118 resolver->config.pac_url = GURL("http://foopy/proxy.pac");
119 resolver->info.UseNamedProxy("foopy:8080"); 136 resolver->info.UseNamedProxy("foopy:8080");
120 resolver->info_predicate_query_host = "www.google.com"; 137 resolver->info_predicate_query_host = "www.google.com";
121 resolver->fail_get_proxy_for_url = true; 138 resolver->fail_get_proxy_for_url = true;
122 139
123 net::ProxyService service(resolver); 140 net::ProxyService service(config_service, resolver);
124 141
125 GURL url("http://www.google.com/"); 142 GURL url("http://www.google.com/");
126 net::ProxyInfo info; 143 net::ProxyInfo info;
127 int rv = service.ResolveProxy(url, &info, NULL, NULL); 144 int rv = service.ResolveProxy(url, &info, NULL, NULL);
128 EXPECT_EQ(rv, net::OK); 145 EXPECT_EQ(rv, net::OK);
129 EXPECT_TRUE(info.is_direct()); 146 EXPECT_TRUE(info.is_direct());
130 147
131 rv = service.ResolveProxy(url, &info, NULL, NULL); 148 rv = service.ResolveProxy(url, &info, NULL, NULL);
132 EXPECT_EQ(rv, net::OK); 149 EXPECT_EQ(rv, net::OK);
133 EXPECT_TRUE(info.is_direct()); 150 EXPECT_TRUE(info.is_direct());
134 151
135 resolver->fail_get_proxy_for_url = false; 152 resolver->fail_get_proxy_for_url = false;
136 resolver->info.UseNamedProxy("foopy_valid:8080"); 153 resolver->info.UseNamedProxy("foopy_valid:8080");
137 154
138 // But, if that fails, then we should give the proxy config another shot 155 // But, if that fails, then we should give the proxy config another shot
139 // since we have never tried it with this URL before. 156 // since we have never tried it with this URL before.
140 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 157 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
141 EXPECT_EQ(rv, net::OK); 158 EXPECT_EQ(rv, net::OK);
142 EXPECT_FALSE(info.is_direct()); 159 EXPECT_FALSE(info.is_direct());
143 EXPECT_EQ(info.proxy_server(), "foopy_valid:8080"); 160 EXPECT_EQ(info.proxy_server(), "foopy_valid:8080");
144 } 161 }
145 162
146 TEST(ProxyServiceTest, ProxyFallback) { 163 TEST(ProxyServiceTest, ProxyFallback) {
147 // Test what happens when we specify multiple proxy servers and some of them 164 // Test what happens when we specify multiple proxy servers and some of them
148 // are bad. 165 // are bad.
149 166
167 MockProxyConfigService* config_service =
168 new MockProxyConfigService("http://foopy/proxy.pac");
169
150 MockProxyResolver* resolver = new MockProxyResolver; 170 MockProxyResolver* resolver = new MockProxyResolver;
151 resolver->config.pac_url = GURL("http://foopy/proxy.pac");
152 resolver->info.UseNamedProxy("foopy1:8080;foopy2:9090"); 171 resolver->info.UseNamedProxy("foopy1:8080;foopy2:9090");
153 resolver->info_predicate_query_host = "www.google.com"; 172 resolver->info_predicate_query_host = "www.google.com";
154 resolver->fail_get_proxy_for_url = false; 173 resolver->fail_get_proxy_for_url = false;
155 174
156 net::ProxyService service(resolver); 175 net::ProxyService service(config_service, resolver);
157 176
158 GURL url("http://www.google.com/"); 177 GURL url("http://www.google.com/");
159 178
160 // Get the proxy information. 179 // Get the proxy information.
161 net::ProxyInfo info; 180 net::ProxyInfo info;
162 int rv = service.ResolveProxy(url, &info, NULL, NULL); 181 int rv = service.ResolveProxy(url, &info, NULL, NULL);
163 EXPECT_EQ(rv, net::OK); 182 EXPECT_EQ(rv, net::OK);
164 EXPECT_FALSE(info.is_direct()); 183 EXPECT_FALSE(info.is_direct());
165 184
166 // The first item is valid. 185 // The first item is valid.
167 EXPECT_EQ(info.proxy_server(), "foopy1:8080"); 186 EXPECT_EQ(info.proxy_server(), "foopy1:8080");
168 187
169 // Fake an error on the proxy. 188 // Fake an error on the proxy.
170 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 189 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
171 EXPECT_EQ(rv, net::OK); 190 EXPECT_EQ(rv, net::OK);
172 191
173 // The second proxy should be specified. 192 // The second proxy should be specified.
174 EXPECT_EQ(info.proxy_server(), "foopy2:9090"); 193 EXPECT_EQ(info.proxy_server(), "foopy2:9090");
175 194
176 // Create a new resolver that returns 3 proxies. The second one is already 195 // Create a new resolver that returns 3 proxies. The second one is already
177 // known to be bad. 196 // known to be bad.
178 resolver->config.pac_url = GURL("http://foopy/proxy.pac"); 197 config_service->config.pac_url = GURL("http://foopy/proxy.pac");
179 resolver->info.UseNamedProxy("foopy3:7070;foopy1:8080;foopy2:9090"); 198 resolver->info.UseNamedProxy("foopy3:7070;foopy1:8080;foopy2:9090");
180 resolver->info_predicate_query_host = "www.google.com"; 199 resolver->info_predicate_query_host = "www.google.com";
181 resolver->fail_get_proxy_for_url = false; 200 resolver->fail_get_proxy_for_url = false;
182 201
183 rv = service.ResolveProxy(url, &info, NULL, NULL); 202 rv = service.ResolveProxy(url, &info, NULL, NULL);
184 EXPECT_EQ(rv, net::OK); 203 EXPECT_EQ(rv, net::OK);
185 EXPECT_FALSE(info.is_direct()); 204 EXPECT_FALSE(info.is_direct());
186 EXPECT_EQ(info.proxy_server(), "foopy3:7070"); 205 EXPECT_EQ(info.proxy_server(), "foopy3:7070");
187 206
188 // We fake another error. It should now try the third one. 207 // We fake another error. It should now try the third one.
189 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 208 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
190 EXPECT_EQ(rv, net::OK); 209 EXPECT_EQ(rv, net::OK);
191 EXPECT_EQ(info.proxy_server(), "foopy2:9090"); 210 EXPECT_EQ(info.proxy_server(), "foopy2:9090");
192 211
193 // Fake another error, the last proxy is gone, the list should now be empty. 212 // Fake another error, the last proxy is gone, the list should now be empty.
194 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 213 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
195 EXPECT_EQ(rv, net::OK); // We try direct. 214 EXPECT_EQ(rv, net::OK); // We try direct.
196 EXPECT_TRUE(info.is_direct()); 215 EXPECT_TRUE(info.is_direct());
197 216
198 // If it fails again, we don't have anything else to try. 217 // If it fails again, we don't have anything else to try.
199 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 218 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
200 EXPECT_EQ(rv, net::ERR_FAILED); // We try direct. 219 EXPECT_EQ(rv, net::ERR_FAILED); // We try direct.
201 220
202 // TODO(nsylvain): Test that the proxy can be retried after the delay. 221 // TODO(nsylvain): Test that the proxy can be retried after the delay.
203 } 222 }
204 223
205 TEST(ProxyServiceTest, ProxyFallback_NewSettings) { 224 TEST(ProxyServiceTest, ProxyFallback_NewSettings) {
206 // Test proxy failover when new settings are available. 225 // Test proxy failover when new settings are available.
207 226
227 MockProxyConfigService* config_service =
228 new MockProxyConfigService("http://foopy/proxy.pac");
229
208 MockProxyResolver* resolver = new MockProxyResolver; 230 MockProxyResolver* resolver = new MockProxyResolver;
209 resolver->config.pac_url = GURL("http://foopy/proxy.pac");
210 resolver->info.UseNamedProxy("foopy1:8080;foopy2:9090"); 231 resolver->info.UseNamedProxy("foopy1:8080;foopy2:9090");
211 resolver->info_predicate_query_host = "www.google.com"; 232 resolver->info_predicate_query_host = "www.google.com";
212 resolver->fail_get_proxy_for_url = false; 233 resolver->fail_get_proxy_for_url = false;
213 234
214 net::ProxyService service(resolver); 235 net::ProxyService service(config_service, resolver);
215 236
216 GURL url("http://www.google.com/"); 237 GURL url("http://www.google.com/");
217 238
218 // Get the proxy information. 239 // Get the proxy information.
219 net::ProxyInfo info; 240 net::ProxyInfo info;
220 int rv = service.ResolveProxy(url, &info, NULL, NULL); 241 int rv = service.ResolveProxy(url, &info, NULL, NULL);
221 EXPECT_EQ(rv, net::OK); 242 EXPECT_EQ(rv, net::OK);
222 EXPECT_FALSE(info.is_direct()); 243 EXPECT_FALSE(info.is_direct());
223 244
224 // The first item is valid. 245 // The first item is valid.
225 EXPECT_EQ(info.proxy_server(), "foopy1:8080"); 246 EXPECT_EQ(info.proxy_server(), "foopy1:8080");
226 247
227 // Fake an error on the proxy, and also a new configuration on the proxy. 248 // Fake an error on the proxy, and also a new configuration on the proxy.
228 resolver->config = net::ProxyConfig(); 249 config_service->config = net::ProxyConfig();
229 resolver->config.pac_url = GURL("http://foopy-new/proxy.pac"); 250 config_service->config.pac_url = GURL("http://foopy-new/proxy.pac");
230 251
231 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 252 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
232 EXPECT_EQ(rv, net::OK); 253 EXPECT_EQ(rv, net::OK);
233 254
234 // The first proxy is still there since the configuration changed. 255 // The first proxy is still there since the configuration changed.
235 EXPECT_EQ(info.proxy_server(), "foopy1:8080"); 256 EXPECT_EQ(info.proxy_server(), "foopy1:8080");
236 257
237 // We fake another error. It should now ignore the first one. 258 // We fake another error. It should now ignore the first one.
238 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 259 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
239 EXPECT_EQ(rv, net::OK); 260 EXPECT_EQ(rv, net::OK);
240 EXPECT_EQ(info.proxy_server(), "foopy2:9090"); 261 EXPECT_EQ(info.proxy_server(), "foopy2:9090");
241 262
242 // We simulate a new configuration. 263 // We simulate a new configuration.
243 resolver->config = net::ProxyConfig(); 264 config_service->config = net::ProxyConfig();
244 resolver->config.pac_url = GURL("http://foopy-new2/proxy.pac"); 265 config_service->config.pac_url = GURL("http://foopy-new2/proxy.pac");
245 266
246 // We fake anothe error. It should go back to the first proxy. 267 // We fake anothe error. It should go back to the first proxy.
247 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL); 268 rv = service.ReconsiderProxyAfterError(url, &info, NULL, NULL);
248 EXPECT_EQ(rv, net::OK); 269 EXPECT_EQ(rv, net::OK);
249 EXPECT_EQ(info.proxy_server(), "foopy1:8080"); 270 EXPECT_EQ(info.proxy_server(), "foopy1:8080");
250 } 271 }
251 272
252 TEST(ProxyServiceTest, ProxyFallback_BadConfig) { 273 TEST(ProxyServiceTest, ProxyFallback_BadConfig) {
253 // Test proxy failover when the configuration is bad. 274 // Test proxy failover when the configuration is bad.
254 275
276 MockProxyConfigService* config_service =
277 new MockProxyConfigService("http://foopy/proxy.pac");
278
255 MockProxyResolver* resolver = new MockProxyResolver; 279 MockProxyResolver* resolver = new MockProxyResolver;
256 resolver->config.pac_url = GURL("http://foopy/proxy.pac");
257 resolver->info.UseNamedProxy("foopy1:8080;foopy2:9090"); 280 resolver->info.UseNamedProxy("foopy1:8080;foopy2:9090");
258 resolver->info_predicate_query_host = "www.google.com"; 281 resolver->info_predicate_query_host = "www.google.com";
259 resolver->fail_get_proxy_for_url = false; 282 resolver->fail_get_proxy_for_url = false;
260 283
261 net::ProxyService service(resolver); 284 net::ProxyService service(config_service, resolver);
262 285
263 GURL url("http://www.google.com/"); 286 GURL url("http://www.google.com/");
264 287
265 // Get the proxy information. 288 // Get the proxy information.
266 net::ProxyInfo info; 289 net::ProxyInfo info;
267 int rv = service.ResolveProxy(url, &info, NULL, NULL); 290 int rv = service.ResolveProxy(url, &info, NULL, NULL);
268 EXPECT_EQ(rv, net::OK); 291 EXPECT_EQ(rv, net::OK);
269 EXPECT_FALSE(info.is_direct()); 292 EXPECT_FALSE(info.is_direct());
270 293
271 // The first item is valid. 294 // The first item is valid.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 } 334 }
312 335
313 TEST(ProxyServiceTest, ProxyBypassList) { 336 TEST(ProxyServiceTest, ProxyBypassList) {
314 // Test what happens when a proxy bypass list is specified. 337 // Test what happens when a proxy bypass list is specified.
315 338
316 net::ProxyConfig config; 339 net::ProxyConfig config;
317 config.proxy_server = "foopy1:8080;foopy2:9090"; 340 config.proxy_server = "foopy1:8080;foopy2:9090";
318 config.auto_detect = false; 341 config.auto_detect = false;
319 config.proxy_bypass_local_names = true; 342 config.proxy_bypass_local_names = true;
320 343
321 net::ProxyService service(new MockProxyResolver(config)); 344 net::ProxyService service(new MockProxyConfigService(config),
345 new MockProxyResolver());
322 GURL url("http://www.google.com/"); 346 GURL url("http://www.google.com/");
323 // Get the proxy information. 347 // Get the proxy information.
324 net::ProxyInfo info; 348 net::ProxyInfo info;
325 int rv = service.ResolveProxy(url, &info, NULL, NULL); 349 int rv = service.ResolveProxy(url, &info, NULL, NULL);
326 EXPECT_EQ(rv, net::OK); 350 EXPECT_EQ(rv, net::OK);
327 EXPECT_FALSE(info.is_direct()); 351 EXPECT_FALSE(info.is_direct());
328 352
329 net::ProxyService service1(new MockProxyResolver(config)); 353 net::ProxyService service1(new MockProxyConfigService(config),
354 new MockProxyResolver());
330 GURL test_url1("local"); 355 GURL test_url1("local");
331 net::ProxyInfo info1; 356 net::ProxyInfo info1;
332 rv = service1.ResolveProxy(test_url1, &info1, NULL, NULL); 357 rv = service1.ResolveProxy(test_url1, &info1, NULL, NULL);
333 EXPECT_EQ(rv, net::OK); 358 EXPECT_EQ(rv, net::OK);
334 EXPECT_TRUE(info1.is_direct()); 359 EXPECT_TRUE(info1.is_direct());
335 360
336 config.proxy_bypass.clear(); 361 config.proxy_bypass.clear();
337 config.proxy_bypass.push_back("*.org"); 362 config.proxy_bypass.push_back("*.org");
338 config.proxy_bypass_local_names = true; 363 config.proxy_bypass_local_names = true;
339 MockProxyResolver* resolver = new MockProxyResolver(config); 364 net::ProxyService service2(new MockProxyConfigService(config),
340 net::ProxyService service2(resolver); 365 new MockProxyResolver);
341 GURL test_url2("http://www.webkit.org"); 366 GURL test_url2("http://www.webkit.org");
342 net::ProxyInfo info2; 367 net::ProxyInfo info2;
343 rv = service2.ResolveProxy(test_url2, &info2, NULL, NULL); 368 rv = service2.ResolveProxy(test_url2, &info2, NULL, NULL);
344 EXPECT_EQ(rv, net::OK); 369 EXPECT_EQ(rv, net::OK);
345 EXPECT_TRUE(info2.is_direct()); 370 EXPECT_TRUE(info2.is_direct());
346 371
347 config.proxy_bypass.clear(); 372 config.proxy_bypass.clear();
348 config.proxy_bypass.push_back("*.org"); 373 config.proxy_bypass.push_back("*.org");
349 config.proxy_bypass.push_back("7*"); 374 config.proxy_bypass.push_back("7*");
350 config.proxy_bypass_local_names = true; 375 config.proxy_bypass_local_names = true;
351 resolver = new MockProxyResolver(config); 376 net::ProxyService service3(new MockProxyConfigService(config),
352 net::ProxyService service3(resolver); 377 new MockProxyResolver);
353 GURL test_url3("http://74.125.19.147"); 378 GURL test_url3("http://74.125.19.147");
354 net::ProxyInfo info3; 379 net::ProxyInfo info3;
355 rv = service3.ResolveProxy(test_url3, &info3, NULL, NULL); 380 rv = service3.ResolveProxy(test_url3, &info3, NULL, NULL);
356 EXPECT_EQ(rv, net::OK); 381 EXPECT_EQ(rv, net::OK);
357 EXPECT_TRUE(info3.is_direct()); 382 EXPECT_TRUE(info3.is_direct());
358 383
359 config.proxy_bypass.clear(); 384 config.proxy_bypass.clear();
360 config.proxy_bypass.push_back("*.org"); 385 config.proxy_bypass.push_back("*.org");
361 config.proxy_bypass_local_names = true; 386 config.proxy_bypass_local_names = true;
362 resolver = new MockProxyResolver(config); 387 net::ProxyService service4(new MockProxyConfigService(config),
363 net::ProxyService service4(resolver); 388 new MockProxyResolver);
364 GURL test_url4("http://www.msn.com"); 389 GURL test_url4("http://www.msn.com");
365 net::ProxyInfo info4; 390 net::ProxyInfo info4;
366 rv = service4.ResolveProxy(test_url4, &info4, NULL, NULL); 391 rv = service4.ResolveProxy(test_url4, &info4, NULL, NULL);
367 EXPECT_EQ(rv, net::OK); 392 EXPECT_EQ(rv, net::OK);
368 EXPECT_FALSE(info4.is_direct()); 393 EXPECT_FALSE(info4.is_direct());
369 394
370 config.proxy_bypass.clear(); 395 config.proxy_bypass.clear();
371 config.proxy_bypass.push_back("*.MSN.COM"); 396 config.proxy_bypass.push_back("*.MSN.COM");
372 config.proxy_bypass_local_names = true; 397 config.proxy_bypass_local_names = true;
373 resolver = new MockProxyResolver(config); 398 net::ProxyService service5(new MockProxyConfigService(config),
374 net::ProxyService service5(resolver); 399 new MockProxyResolver);
375 GURL test_url5("http://www.msnbc.msn.com"); 400 GURL test_url5("http://www.msnbc.msn.com");
376 net::ProxyInfo info5; 401 net::ProxyInfo info5;
377 rv = service5.ResolveProxy(test_url5, &info5, NULL, NULL); 402 rv = service5.ResolveProxy(test_url5, &info5, NULL, NULL);
378 EXPECT_EQ(rv, net::OK); 403 EXPECT_EQ(rv, net::OK);
379 EXPECT_TRUE(info5.is_direct()); 404 EXPECT_TRUE(info5.is_direct());
380 405
381 config.proxy_bypass.clear(); 406 config.proxy_bypass.clear();
382 config.proxy_bypass.push_back("*.msn.com"); 407 config.proxy_bypass.push_back("*.msn.com");
383 config.proxy_bypass_local_names = true; 408 config.proxy_bypass_local_names = true;
384 resolver = new MockProxyResolver(config); 409 net::ProxyService service6(new MockProxyConfigService(config),
385 net::ProxyService service6(resolver); 410 new MockProxyResolver);
386 GURL test_url6("HTTP://WWW.MSNBC.MSN.COM"); 411 GURL test_url6("HTTP://WWW.MSNBC.MSN.COM");
387 net::ProxyInfo info6; 412 net::ProxyInfo info6;
388 rv = service6.ResolveProxy(test_url6, &info6, NULL, NULL); 413 rv = service6.ResolveProxy(test_url6, &info6, NULL, NULL);
389 EXPECT_EQ(rv, net::OK); 414 EXPECT_EQ(rv, net::OK);
390 EXPECT_TRUE(info6.is_direct()); 415 EXPECT_TRUE(info6.is_direct());
391 } 416 }
392 417
393 TEST(ProxyServiceTest, PerProtocolProxyTests) { 418 TEST(ProxyServiceTest, PerProtocolProxyTests) {
394 net::ProxyConfig config; 419 net::ProxyConfig config;
395 config.proxy_server = "http=foopy1:8080;https=foopy2:8080"; 420 config.proxy_server = "http=foopy1:8080;https=foopy2:8080";
396 config.auto_detect = false; 421 config.auto_detect = false;
397 422
398 net::ProxyService service1(new MockProxyResolver(config)); 423 net::ProxyService service1(new MockProxyConfigService(config),
424 new MockProxyResolver);
399 GURL test_url1("http://www.msn.com"); 425 GURL test_url1("http://www.msn.com");
400 net::ProxyInfo info1; 426 net::ProxyInfo info1;
401 int rv = service1.ResolveProxy(test_url1, &info1, NULL, NULL); 427 int rv = service1.ResolveProxy(test_url1, &info1, NULL, NULL);
402 EXPECT_EQ(rv, net::OK); 428 EXPECT_EQ(rv, net::OK);
403 EXPECT_FALSE(info1.is_direct()); 429 EXPECT_FALSE(info1.is_direct());
404 EXPECT_TRUE(info1.proxy_server() == "foopy1:8080"); 430 EXPECT_TRUE(info1.proxy_server() == "foopy1:8080");
405 431
406 net::ProxyService service2(new MockProxyResolver(config)); 432 net::ProxyService service2(new MockProxyConfigService(config),
433 new MockProxyResolver);
407 GURL test_url2("ftp://ftp.google.com"); 434 GURL test_url2("ftp://ftp.google.com");
408 net::ProxyInfo info2; 435 net::ProxyInfo info2;
409 rv = service2.ResolveProxy(test_url2, &info2, NULL, NULL); 436 rv = service2.ResolveProxy(test_url2, &info2, NULL, NULL);
410 EXPECT_EQ(rv, net::OK); 437 EXPECT_EQ(rv, net::OK);
411 EXPECT_TRUE(info2.is_direct()); 438 EXPECT_TRUE(info2.is_direct());
412 EXPECT_TRUE(info2.proxy_server() == ""); 439 EXPECT_TRUE(info2.proxy_server() == "");
413 440
414 net::ProxyService service3(new MockProxyResolver(config)); 441 net::ProxyService service3(new MockProxyConfigService(config),
442 new MockProxyResolver);
415 GURL test_url3("https://webbranch.techcu.com"); 443 GURL test_url3("https://webbranch.techcu.com");
416 net::ProxyInfo info3; 444 net::ProxyInfo info3;
417 rv = service3.ResolveProxy(test_url3, &info3, NULL, NULL); 445 rv = service3.ResolveProxy(test_url3, &info3, NULL, NULL);
418 EXPECT_EQ(rv, net::OK); 446 EXPECT_EQ(rv, net::OK);
419 EXPECT_FALSE(info3.is_direct()); 447 EXPECT_FALSE(info3.is_direct());
420 EXPECT_TRUE(info3.proxy_server() == "foopy2:8080"); 448 EXPECT_TRUE(info3.proxy_server() == "foopy2:8080");
421 449
422 MockProxyResolver* resolver = new MockProxyResolver(config); 450 config.proxy_server = "foopy1:8080";
423 resolver->config.proxy_server = "foopy1:8080"; 451 net::ProxyService service4(new MockProxyConfigService(config),
424 net::ProxyService service4(resolver); 452 new MockProxyResolver);
425 GURL test_url4("www.microsoft.com"); 453 GURL test_url4("www.microsoft.com");
426 net::ProxyInfo info4; 454 net::ProxyInfo info4;
427 rv = service4.ResolveProxy(test_url4, &info4, NULL, NULL); 455 rv = service4.ResolveProxy(test_url4, &info4, NULL, NULL);
428 EXPECT_EQ(rv, net::OK); 456 EXPECT_EQ(rv, net::OK);
429 EXPECT_FALSE(info4.is_direct()); 457 EXPECT_FALSE(info4.is_direct());
430 EXPECT_TRUE(info4.proxy_server() == "foopy1:8080"); 458 EXPECT_TRUE(info4.proxy_server() == "foopy1:8080");
431 } 459 }
432 460
OLDNEW
« no previous file with comments | « net/proxy/proxy_service.cc ('k') | net/url_request/url_request_unittest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698