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

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

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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
« no previous file with comments | « net/proxy/proxy_script_decider_unittest.cc ('k') | net/proxy/proxy_service_mojo_unittest.cc » ('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) 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_script_fetcher_impl.h" 5 #include "net/proxy/proxy_script_fetcher_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 12 matching lines...) Expand all
23 #include "net/cert/mock_cert_verifier.h" 23 #include "net/cert/mock_cert_verifier.h"
24 #include "net/cert/multi_log_ct_verifier.h" 24 #include "net/cert/multi_log_ct_verifier.h"
25 #include "net/disk_cache/disk_cache.h" 25 #include "net/disk_cache/disk_cache.h"
26 #include "net/dns/mock_host_resolver.h" 26 #include "net/dns/mock_host_resolver.h"
27 #include "net/http/http_cache.h" 27 #include "net/http/http_cache.h"
28 #include "net/http/http_network_session.h" 28 #include "net/http/http_network_session.h"
29 #include "net/http/http_server_properties_impl.h" 29 #include "net/http/http_server_properties_impl.h"
30 #include "net/http/transport_security_state.h" 30 #include "net/http/transport_security_state.h"
31 #include "net/ssl/ssl_config_service_defaults.h" 31 #include "net/ssl/ssl_config_service_defaults.h"
32 #include "net/test/embedded_test_server/embedded_test_server.h" 32 #include "net/test/embedded_test_server/embedded_test_server.h"
33 #include "net/test/gtest_util.h"
33 #include "net/url_request/url_request_context_storage.h" 34 #include "net/url_request/url_request_context_storage.h"
34 #include "net/url_request/url_request_file_job.h" 35 #include "net/url_request/url_request_file_job.h"
35 #include "net/url_request/url_request_job_factory_impl.h" 36 #include "net/url_request/url_request_job_factory_impl.h"
36 #include "net/url_request/url_request_test_util.h" 37 #include "net/url_request/url_request_test_util.h"
38 #include "testing/gmock/include/gmock/gmock.h"
37 #include "testing/gtest/include/gtest/gtest.h" 39 #include "testing/gtest/include/gtest/gtest.h"
38 #include "testing/platform_test.h" 40 #include "testing/platform_test.h"
39 41
40 #if !defined(DISABLE_FILE_SUPPORT) 42 #if !defined(DISABLE_FILE_SUPPORT)
41 #include "net/url_request/file_protocol_handler.h" 43 #include "net/url_request/file_protocol_handler.h"
42 #endif 44 #endif
43 45
46 using net::test::IsError;
47 using net::test::IsOk;
48
44 using base::ASCIIToUTF16; 49 using base::ASCIIToUTF16;
45 50
46 // TODO(eroman): 51 // TODO(eroman):
47 // - Test canceling an outstanding request. 52 // - Test canceling an outstanding request.
48 // - Test deleting ProxyScriptFetcher while a request is in progress. 53 // - Test deleting ProxyScriptFetcher while a request is in progress.
49 54
50 namespace net { 55 namespace net {
51 56
52 namespace { 57 namespace {
53 58
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 215
211 #if !defined(DISABLE_FILE_SUPPORT) 216 #if !defined(DISABLE_FILE_SUPPORT)
212 TEST_F(ProxyScriptFetcherImplTest, FileUrl) { 217 TEST_F(ProxyScriptFetcherImplTest, FileUrl) {
213 ProxyScriptFetcherImpl pac_fetcher(&context_); 218 ProxyScriptFetcherImpl pac_fetcher(&context_);
214 219
215 { // Fetch a non-existent file. 220 { // Fetch a non-existent file.
216 base::string16 text; 221 base::string16 text;
217 TestCompletionCallback callback; 222 TestCompletionCallback callback;
218 int result = pac_fetcher.Fetch(GetTestFileUrl("does-not-exist"), 223 int result = pac_fetcher.Fetch(GetTestFileUrl("does-not-exist"),
219 &text, callback.callback()); 224 &text, callback.callback());
220 EXPECT_EQ(ERR_IO_PENDING, result); 225 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
221 EXPECT_EQ(ERR_FILE_NOT_FOUND, callback.WaitForResult()); 226 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FILE_NOT_FOUND));
222 EXPECT_TRUE(text.empty()); 227 EXPECT_TRUE(text.empty());
223 } 228 }
224 { // Fetch a file that exists. 229 { // Fetch a file that exists.
225 base::string16 text; 230 base::string16 text;
226 TestCompletionCallback callback; 231 TestCompletionCallback callback;
227 int result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt"), 232 int result = pac_fetcher.Fetch(GetTestFileUrl("pac.txt"),
228 &text, callback.callback()); 233 &text, callback.callback());
229 EXPECT_EQ(ERR_IO_PENDING, result); 234 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
230 EXPECT_EQ(OK, callback.WaitForResult()); 235 EXPECT_THAT(callback.WaitForResult(), IsOk());
231 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text); 236 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text);
232 } 237 }
233 } 238 }
234 #endif // !defined(DISABLE_FILE_SUPPORT) 239 #endif // !defined(DISABLE_FILE_SUPPORT)
235 240
236 // Note that all mime types are allowed for PAC file, to be consistent 241 // Note that all mime types are allowed for PAC file, to be consistent
237 // with other browsers. 242 // with other browsers.
238 TEST_F(ProxyScriptFetcherImplTest, HttpMimeType) { 243 TEST_F(ProxyScriptFetcherImplTest, HttpMimeType) {
239 ASSERT_TRUE(test_server_.Start()); 244 ASSERT_TRUE(test_server_.Start());
240 245
241 ProxyScriptFetcherImpl pac_fetcher(&context_); 246 ProxyScriptFetcherImpl pac_fetcher(&context_);
242 247
243 { // Fetch a PAC with mime type "text/plain" 248 { // Fetch a PAC with mime type "text/plain"
244 GURL url(test_server_.GetURL("/pac.txt")); 249 GURL url(test_server_.GetURL("/pac.txt"));
245 base::string16 text; 250 base::string16 text;
246 TestCompletionCallback callback; 251 TestCompletionCallback callback;
247 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 252 int result = pac_fetcher.Fetch(url, &text, callback.callback());
248 EXPECT_EQ(ERR_IO_PENDING, result); 253 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
249 EXPECT_EQ(OK, callback.WaitForResult()); 254 EXPECT_THAT(callback.WaitForResult(), IsOk());
250 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text); 255 EXPECT_EQ(ASCIIToUTF16("-pac.txt-\n"), text);
251 } 256 }
252 { // Fetch a PAC with mime type "text/html" 257 { // Fetch a PAC with mime type "text/html"
253 GURL url(test_server_.GetURL("/pac.html")); 258 GURL url(test_server_.GetURL("/pac.html"));
254 base::string16 text; 259 base::string16 text;
255 TestCompletionCallback callback; 260 TestCompletionCallback callback;
256 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 261 int result = pac_fetcher.Fetch(url, &text, callback.callback());
257 EXPECT_EQ(ERR_IO_PENDING, result); 262 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
258 EXPECT_EQ(OK, callback.WaitForResult()); 263 EXPECT_THAT(callback.WaitForResult(), IsOk());
259 EXPECT_EQ(ASCIIToUTF16("-pac.html-\n"), text); 264 EXPECT_EQ(ASCIIToUTF16("-pac.html-\n"), text);
260 } 265 }
261 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig" 266 { // Fetch a PAC with mime type "application/x-ns-proxy-autoconfig"
262 GURL url(test_server_.GetURL("/pac.nsproxy")); 267 GURL url(test_server_.GetURL("/pac.nsproxy"));
263 base::string16 text; 268 base::string16 text;
264 TestCompletionCallback callback; 269 TestCompletionCallback callback;
265 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 270 int result = pac_fetcher.Fetch(url, &text, callback.callback());
266 EXPECT_EQ(ERR_IO_PENDING, result); 271 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
267 EXPECT_EQ(OK, callback.WaitForResult()); 272 EXPECT_THAT(callback.WaitForResult(), IsOk());
268 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); 273 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text);
269 } 274 }
270 } 275 }
271 276
272 TEST_F(ProxyScriptFetcherImplTest, HttpStatusCode) { 277 TEST_F(ProxyScriptFetcherImplTest, HttpStatusCode) {
273 ASSERT_TRUE(test_server_.Start()); 278 ASSERT_TRUE(test_server_.Start());
274 279
275 ProxyScriptFetcherImpl pac_fetcher(&context_); 280 ProxyScriptFetcherImpl pac_fetcher(&context_);
276 281
277 { // Fetch a PAC which gives a 500 -- FAIL 282 { // Fetch a PAC which gives a 500 -- FAIL
278 GURL url(test_server_.GetURL("/500.pac")); 283 GURL url(test_server_.GetURL("/500.pac"));
279 base::string16 text; 284 base::string16 text;
280 TestCompletionCallback callback; 285 TestCompletionCallback callback;
281 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 286 int result = pac_fetcher.Fetch(url, &text, callback.callback());
282 EXPECT_EQ(ERR_IO_PENDING, result); 287 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
283 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); 288 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PAC_STATUS_NOT_OK));
284 EXPECT_TRUE(text.empty()); 289 EXPECT_TRUE(text.empty());
285 } 290 }
286 { // Fetch a PAC which gives a 404 -- FAIL 291 { // Fetch a PAC which gives a 404 -- FAIL
287 GURL url(test_server_.GetURL("/404.pac")); 292 GURL url(test_server_.GetURL("/404.pac"));
288 base::string16 text; 293 base::string16 text;
289 TestCompletionCallback callback; 294 TestCompletionCallback callback;
290 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 295 int result = pac_fetcher.Fetch(url, &text, callback.callback());
291 EXPECT_EQ(ERR_IO_PENDING, result); 296 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
292 EXPECT_EQ(ERR_PAC_STATUS_NOT_OK, callback.WaitForResult()); 297 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PAC_STATUS_NOT_OK));
293 EXPECT_TRUE(text.empty()); 298 EXPECT_TRUE(text.empty());
294 } 299 }
295 } 300 }
296 301
297 TEST_F(ProxyScriptFetcherImplTest, ContentDisposition) { 302 TEST_F(ProxyScriptFetcherImplTest, ContentDisposition) {
298 ASSERT_TRUE(test_server_.Start()); 303 ASSERT_TRUE(test_server_.Start());
299 304
300 ProxyScriptFetcherImpl pac_fetcher(&context_); 305 ProxyScriptFetcherImpl pac_fetcher(&context_);
301 306
302 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should 307 // Fetch PAC scripts via HTTP with a Content-Disposition header -- should
303 // have no effect. 308 // have no effect.
304 GURL url(test_server_.GetURL("/downloadable.pac")); 309 GURL url(test_server_.GetURL("/downloadable.pac"));
305 base::string16 text; 310 base::string16 text;
306 TestCompletionCallback callback; 311 TestCompletionCallback callback;
307 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 312 int result = pac_fetcher.Fetch(url, &text, callback.callback());
308 EXPECT_EQ(ERR_IO_PENDING, result); 313 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
309 EXPECT_EQ(OK, callback.WaitForResult()); 314 EXPECT_THAT(callback.WaitForResult(), IsOk());
310 EXPECT_EQ(ASCIIToUTF16("-downloadable.pac-\n"), text); 315 EXPECT_EQ(ASCIIToUTF16("-downloadable.pac-\n"), text);
311 } 316 }
312 317
313 // Verifies that PAC scripts are not being cached. 318 // Verifies that PAC scripts are not being cached.
314 TEST_F(ProxyScriptFetcherImplTest, NoCache) { 319 TEST_F(ProxyScriptFetcherImplTest, NoCache) {
315 ASSERT_TRUE(test_server_.Start()); 320 ASSERT_TRUE(test_server_.Start());
316 321
317 ProxyScriptFetcherImpl pac_fetcher(&context_); 322 ProxyScriptFetcherImpl pac_fetcher(&context_);
318 323
319 // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour. 324 // Fetch a PAC script whose HTTP headers make it cacheable for 1 hour.
320 GURL url(test_server_.GetURL("/cacheable_1hr.pac")); 325 GURL url(test_server_.GetURL("/cacheable_1hr.pac"));
321 { 326 {
322 base::string16 text; 327 base::string16 text;
323 TestCompletionCallback callback; 328 TestCompletionCallback callback;
324 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 329 int result = pac_fetcher.Fetch(url, &text, callback.callback());
325 EXPECT_EQ(ERR_IO_PENDING, result); 330 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
326 EXPECT_EQ(OK, callback.WaitForResult()); 331 EXPECT_THAT(callback.WaitForResult(), IsOk());
327 EXPECT_EQ(ASCIIToUTF16("-cacheable_1hr.pac-\n"), text); 332 EXPECT_EQ(ASCIIToUTF16("-cacheable_1hr.pac-\n"), text);
328 } 333 }
329 334
330 // Kill the HTTP server. 335 // Kill the HTTP server.
331 ASSERT_TRUE(test_server_.ShutdownAndWaitUntilComplete()); 336 ASSERT_TRUE(test_server_.ShutdownAndWaitUntilComplete());
332 337
333 // Try to fetch the file again. Since the server is not running anymore, the 338 // Try to fetch the file again. Since the server is not running anymore, the
334 // call should fail, thus indicating that the file was not fetched from the 339 // call should fail, thus indicating that the file was not fetched from the
335 // local cache. 340 // local cache.
336 { 341 {
337 base::string16 text; 342 base::string16 text;
338 TestCompletionCallback callback; 343 TestCompletionCallback callback;
339 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 344 int result = pac_fetcher.Fetch(url, &text, callback.callback());
340 EXPECT_EQ(ERR_IO_PENDING, result); 345 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
341 346
342 // Expect any error. The exact error varies by platform. 347 // Expect any error. The exact error varies by platform.
343 EXPECT_NE(OK, callback.WaitForResult()); 348 EXPECT_NE(OK, callback.WaitForResult());
344 } 349 }
345 } 350 }
346 351
347 TEST_F(ProxyScriptFetcherImplTest, TooLarge) { 352 TEST_F(ProxyScriptFetcherImplTest, TooLarge) {
348 ASSERT_TRUE(test_server_.Start()); 353 ASSERT_TRUE(test_server_.Start());
349 354
350 ProxyScriptFetcherImpl pac_fetcher(&context_); 355 ProxyScriptFetcherImpl pac_fetcher(&context_);
351 356
352 // Set the maximum response size to 50 bytes. 357 // Set the maximum response size to 50 bytes.
353 int prev_size = pac_fetcher.SetSizeConstraint(50); 358 int prev_size = pac_fetcher.SetSizeConstraint(50);
354 359
355 // These two URLs are the same file, but are http:// vs file:// 360 // These two URLs are the same file, but are http:// vs file://
356 GURL urls[] = { 361 GURL urls[] = {
357 test_server_.GetURL("/large-pac.nsproxy"), 362 test_server_.GetURL("/large-pac.nsproxy"),
358 #if !defined(DISABLE_FILE_SUPPORT) 363 #if !defined(DISABLE_FILE_SUPPORT)
359 GetTestFileUrl("large-pac.nsproxy") 364 GetTestFileUrl("large-pac.nsproxy")
360 #endif 365 #endif
361 }; 366 };
362 367
363 // Try fetching URLs that are 101 bytes large. We should abort the request 368 // Try fetching URLs that are 101 bytes large. We should abort the request
364 // after 50 bytes have been read, and fail with a too large error. 369 // after 50 bytes have been read, and fail with a too large error.
365 for (size_t i = 0; i < arraysize(urls); ++i) { 370 for (size_t i = 0; i < arraysize(urls); ++i) {
366 const GURL& url = urls[i]; 371 const GURL& url = urls[i];
367 base::string16 text; 372 base::string16 text;
368 TestCompletionCallback callback; 373 TestCompletionCallback callback;
369 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 374 int result = pac_fetcher.Fetch(url, &text, callback.callback());
370 EXPECT_EQ(ERR_IO_PENDING, result); 375 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
371 EXPECT_EQ(ERR_FILE_TOO_BIG, callback.WaitForResult()); 376 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FILE_TOO_BIG));
372 EXPECT_TRUE(text.empty()); 377 EXPECT_TRUE(text.empty());
373 } 378 }
374 379
375 // Restore the original size bound. 380 // Restore the original size bound.
376 pac_fetcher.SetSizeConstraint(prev_size); 381 pac_fetcher.SetSizeConstraint(prev_size);
377 382
378 { // Make sure we can still fetch regular URLs. 383 { // Make sure we can still fetch regular URLs.
379 GURL url(test_server_.GetURL("/pac.nsproxy")); 384 GURL url(test_server_.GetURL("/pac.nsproxy"));
380 base::string16 text; 385 base::string16 text;
381 TestCompletionCallback callback; 386 TestCompletionCallback callback;
382 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 387 int result = pac_fetcher.Fetch(url, &text, callback.callback());
383 EXPECT_EQ(ERR_IO_PENDING, result); 388 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
384 EXPECT_EQ(OK, callback.WaitForResult()); 389 EXPECT_THAT(callback.WaitForResult(), IsOk());
385 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); 390 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text);
386 } 391 }
387 } 392 }
388 393
389 TEST_F(ProxyScriptFetcherImplTest, Hang) { 394 TEST_F(ProxyScriptFetcherImplTest, Hang) {
390 ASSERT_TRUE(test_server_.Start()); 395 ASSERT_TRUE(test_server_.Start());
391 396
392 ProxyScriptFetcherImpl pac_fetcher(&context_); 397 ProxyScriptFetcherImpl pac_fetcher(&context_);
393 398
394 // Set the timeout period to 0.5 seconds. 399 // Set the timeout period to 0.5 seconds.
395 base::TimeDelta prev_timeout = pac_fetcher.SetTimeoutConstraint( 400 base::TimeDelta prev_timeout = pac_fetcher.SetTimeoutConstraint(
396 base::TimeDelta::FromMilliseconds(500)); 401 base::TimeDelta::FromMilliseconds(500));
397 402
398 // Try fetching a URL which takes 1.2 seconds. We should abort the request 403 // Try fetching a URL which takes 1.2 seconds. We should abort the request
399 // after 500 ms, and fail with a timeout error. 404 // after 500 ms, and fail with a timeout error.
400 { 405 {
401 GURL url(test_server_.GetURL("/slow/proxy.pac?1.2")); 406 GURL url(test_server_.GetURL("/slow/proxy.pac?1.2"));
402 base::string16 text; 407 base::string16 text;
403 TestCompletionCallback callback; 408 TestCompletionCallback callback;
404 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 409 int result = pac_fetcher.Fetch(url, &text, callback.callback());
405 EXPECT_EQ(ERR_IO_PENDING, result); 410 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
406 EXPECT_EQ(ERR_TIMED_OUT, callback.WaitForResult()); 411 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_TIMED_OUT));
407 EXPECT_TRUE(text.empty()); 412 EXPECT_TRUE(text.empty());
408 } 413 }
409 414
410 // Restore the original timeout period. 415 // Restore the original timeout period.
411 pac_fetcher.SetTimeoutConstraint(prev_timeout); 416 pac_fetcher.SetTimeoutConstraint(prev_timeout);
412 417
413 { // Make sure we can still fetch regular URLs. 418 { // Make sure we can still fetch regular URLs.
414 GURL url(test_server_.GetURL("/pac.nsproxy")); 419 GURL url(test_server_.GetURL("/pac.nsproxy"));
415 base::string16 text; 420 base::string16 text;
416 TestCompletionCallback callback; 421 TestCompletionCallback callback;
417 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 422 int result = pac_fetcher.Fetch(url, &text, callback.callback());
418 EXPECT_EQ(ERR_IO_PENDING, result); 423 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
419 EXPECT_EQ(OK, callback.WaitForResult()); 424 EXPECT_THAT(callback.WaitForResult(), IsOk());
420 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text); 425 EXPECT_EQ(ASCIIToUTF16("-pac.nsproxy-\n"), text);
421 } 426 }
422 } 427 }
423 428
424 // The ProxyScriptFetcher should decode any content-codings 429 // The ProxyScriptFetcher should decode any content-codings
425 // (like gzip, bzip, etc.), and apply any charset conversions to yield 430 // (like gzip, bzip, etc.), and apply any charset conversions to yield
426 // UTF8. 431 // UTF8.
427 TEST_F(ProxyScriptFetcherImplTest, Encodings) { 432 TEST_F(ProxyScriptFetcherImplTest, Encodings) {
428 ASSERT_TRUE(test_server_.Start()); 433 ASSERT_TRUE(test_server_.Start());
429 434
430 ProxyScriptFetcherImpl pac_fetcher(&context_); 435 ProxyScriptFetcherImpl pac_fetcher(&context_);
431 436
432 // Test a response that is gzip-encoded -- should get inflated. 437 // Test a response that is gzip-encoded -- should get inflated.
433 { 438 {
434 GURL url(test_server_.GetURL("/gzipped_pac")); 439 GURL url(test_server_.GetURL("/gzipped_pac"));
435 base::string16 text; 440 base::string16 text;
436 TestCompletionCallback callback; 441 TestCompletionCallback callback;
437 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 442 int result = pac_fetcher.Fetch(url, &text, callback.callback());
438 EXPECT_EQ(ERR_IO_PENDING, result); 443 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
439 EXPECT_EQ(OK, callback.WaitForResult()); 444 EXPECT_THAT(callback.WaitForResult(), IsOk());
440 EXPECT_EQ(ASCIIToUTF16("This data was gzipped.\n"), text); 445 EXPECT_EQ(ASCIIToUTF16("This data was gzipped.\n"), text);
441 } 446 }
442 447
443 // Test a response that was served as UTF-16 (BE). It should 448 // Test a response that was served as UTF-16 (BE). It should
444 // be converted to UTF8. 449 // be converted to UTF8.
445 { 450 {
446 GURL url(test_server_.GetURL("/utf16be_pac")); 451 GURL url(test_server_.GetURL("/utf16be_pac"));
447 base::string16 text; 452 base::string16 text;
448 TestCompletionCallback callback; 453 TestCompletionCallback callback;
449 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 454 int result = pac_fetcher.Fetch(url, &text, callback.callback());
450 EXPECT_EQ(ERR_IO_PENDING, result); 455 EXPECT_THAT(result, IsError(ERR_IO_PENDING));
451 EXPECT_EQ(OK, callback.WaitForResult()); 456 EXPECT_THAT(callback.WaitForResult(), IsOk());
452 EXPECT_EQ(ASCIIToUTF16("This was encoded as UTF-16BE.\n"), text); 457 EXPECT_EQ(ASCIIToUTF16("This was encoded as UTF-16BE.\n"), text);
453 } 458 }
454 } 459 }
455 460
456 TEST_F(ProxyScriptFetcherImplTest, DataURLs) { 461 TEST_F(ProxyScriptFetcherImplTest, DataURLs) {
457 ProxyScriptFetcherImpl pac_fetcher(&context_); 462 ProxyScriptFetcherImpl pac_fetcher(&context_);
458 463
459 const char kEncodedUrl[] = 464 const char kEncodedUrl[] =
460 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R" 465 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R"
461 "m9yVVJMKHVybCwgaG9zdCkgewogIGlmIChob3N0ID09ICdmb29iYXIuY29tJykKICAgIHJl" 466 "m9yVVJMKHVybCwgaG9zdCkgewogIGlmIChob3N0ID09ICdmb29iYXIuY29tJykKICAgIHJl"
462 "dHVybiAnUFJPWFkgYmxhY2tob2xlOjgwJzsKICByZXR1cm4gJ0RJUkVDVCc7Cn0="; 467 "dHVybiAnUFJPWFkgYmxhY2tob2xlOjgwJzsKICByZXR1cm4gJ0RJUkVDVCc7Cn0=";
463 const char kPacScript[] = 468 const char kPacScript[] =
464 "function FindProxyForURL(url, host) {\n" 469 "function FindProxyForURL(url, host) {\n"
465 " if (host == 'foobar.com')\n" 470 " if (host == 'foobar.com')\n"
466 " return 'PROXY blackhole:80';\n" 471 " return 'PROXY blackhole:80';\n"
467 " return 'DIRECT';\n" 472 " return 'DIRECT';\n"
468 "}"; 473 "}";
469 474
470 // Test fetching a "data:"-url containing a base64 encoded PAC script. 475 // Test fetching a "data:"-url containing a base64 encoded PAC script.
471 { 476 {
472 GURL url(kEncodedUrl); 477 GURL url(kEncodedUrl);
473 base::string16 text; 478 base::string16 text;
474 TestCompletionCallback callback; 479 TestCompletionCallback callback;
475 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 480 int result = pac_fetcher.Fetch(url, &text, callback.callback());
476 EXPECT_EQ(OK, result); 481 EXPECT_THAT(result, IsOk());
477 EXPECT_EQ(ASCIIToUTF16(kPacScript), text); 482 EXPECT_EQ(ASCIIToUTF16(kPacScript), text);
478 } 483 }
479 484
480 const char kEncodedUrlBroken[] = 485 const char kEncodedUrlBroken[] =
481 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R"; 486 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R";
482 487
483 // Test a broken "data:"-url containing a base64 encoded PAC script. 488 // Test a broken "data:"-url containing a base64 encoded PAC script.
484 { 489 {
485 GURL url(kEncodedUrlBroken); 490 GURL url(kEncodedUrlBroken);
486 base::string16 text; 491 base::string16 text;
487 TestCompletionCallback callback; 492 TestCompletionCallback callback;
488 int result = pac_fetcher.Fetch(url, &text, callback.callback()); 493 int result = pac_fetcher.Fetch(url, &text, callback.callback());
489 EXPECT_EQ(ERR_FAILED, result); 494 EXPECT_THAT(result, IsError(ERR_FAILED));
490 } 495 }
491 } 496 }
492 497
493 } // namespace 498 } // namespace
494 499
495 } // namespace net 500 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_script_decider_unittest.cc ('k') | net/proxy/proxy_service_mojo_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698