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

Side by Side Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_interceptor_unittest.cc

Issue 2261103002: Use modified URLRequest::Read() and delegate methods in components/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@URLRequestRead
Patch Set: comments Created 4 years, 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/data_reduction_proxy/core/browser/data_reduction_proxy_inte rceptor.h" 5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_inte rceptor.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 // Tests the mechanics of proxy bypass work with a "real" server. For tests 253 // Tests the mechanics of proxy bypass work with a "real" server. For tests
254 // that cover every imaginable response that could trigger a bypass, see: 254 // that cover every imaginable response that could trigger a bypass, see:
255 // DataReductionProxyProtocolTest. 255 // DataReductionProxyProtocolTest.
256 net::TestDelegate delegate; 256 net::TestDelegate delegate;
257 std::unique_ptr<net::URLRequest> request(context().CreateRequest( 257 std::unique_ptr<net::URLRequest> request(context().CreateRequest(
258 direct().GetURL("/block10.html"), net::DEFAULT_PRIORITY, &delegate)); 258 direct().GetURL("/block10.html"), net::DEFAULT_PRIORITY, &delegate));
259 request->Start(); 259 request->Start();
260 EXPECT_TRUE(request->is_pending()); 260 EXPECT_TRUE(request->is_pending());
261 base::RunLoop().Run(); 261 base::RunLoop().Run();
262 262
263 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 263 EXPECT_EQ(net::OK, delegate.request_status());
264 EXPECT_EQ(net::OK, request->status().error());
265 EXPECT_EQ("hello", delegate.data_received()); 264 EXPECT_EQ("hello", delegate.data_received());
266 } 265 }
267 266
268 TEST_F(DataReductionProxyInterceptorWithServerTest, TestNoBypass) { 267 TEST_F(DataReductionProxyInterceptorWithServerTest, TestNoBypass) {
269 net::TestDelegate delegate; 268 net::TestDelegate delegate;
270 std::unique_ptr<net::URLRequest> request(context().CreateRequest( 269 std::unique_ptr<net::URLRequest> request(context().CreateRequest(
271 direct().GetURL("/noblock.html"), net::DEFAULT_PRIORITY, &delegate)); 270 direct().GetURL("/noblock.html"), net::DEFAULT_PRIORITY, &delegate));
272 request->Start(); 271 request->Start();
273 EXPECT_TRUE(request->is_pending()); 272 EXPECT_TRUE(request->is_pending());
274 base::RunLoop().Run(); 273 base::RunLoop().Run();
275 274
276 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 275 EXPECT_EQ(net::OK, delegate.request_status());
277 EXPECT_EQ(net::OK, request->status().error());
278 EXPECT_EQ("hello", delegate.data_received()); 276 EXPECT_EQ("hello", delegate.data_received());
279 } 277 }
280 278
281 class DataReductionProxyInterceptorEndToEndTest : public testing::Test { 279 class DataReductionProxyInterceptorEndToEndTest : public testing::Test {
282 public: 280 public:
283 DataReductionProxyInterceptorEndToEndTest() 281 DataReductionProxyInterceptorEndToEndTest()
284 : context_(true), context_storage_(&context_) {} 282 : context_(true), context_storage_(&context_) {}
285 283
286 ~DataReductionProxyInterceptorEndToEndTest() override {} 284 ~DataReductionProxyInterceptorEndToEndTest() override {}
287 285
(...skipping 19 matching lines...) Expand all
307 // Creates a URLRequest using the test's TestURLRequestContext and executes 305 // Creates a URLRequest using the test's TestURLRequestContext and executes
308 // it. Returns the created URLRequest. 306 // it. Returns the created URLRequest.
309 std::unique_ptr<net::URLRequest> CreateAndExecuteRequest(const GURL& url) { 307 std::unique_ptr<net::URLRequest> CreateAndExecuteRequest(const GURL& url) {
310 std::unique_ptr<net::URLRequest> request( 308 std::unique_ptr<net::URLRequest> request(
311 context_.CreateRequest(url, net::IDLE, &delegate_)); 309 context_.CreateRequest(url, net::IDLE, &delegate_));
312 request->Start(); 310 request->Start();
313 drp_test_context_->RunUntilIdle(); 311 drp_test_context_->RunUntilIdle();
314 return request; 312 return request;
315 } 313 }
316 314
317 const net::TestDelegate& delegate() const { 315 const net::TestDelegate& delegate() const { return delegate_; }
318 return delegate_;
319 }
320 316
321 net::MockClientSocketFactory* mock_socket_factory() { 317 net::MockClientSocketFactory* mock_socket_factory() {
322 return &mock_socket_factory_; 318 return &mock_socket_factory_;
323 } 319 }
324 320
325 TestDataReductionProxyConfig* config() const { 321 TestDataReductionProxyConfig* config() const {
326 return drp_test_context_->config(); 322 return drp_test_context_->config();
327 } 323 }
328 324
329 net::ProxyServer origin() const { 325 net::ProxyServer origin() const {
(...skipping 19 matching lines...) Expand all
349 MockRead(kBody.c_str()), 345 MockRead(kBody.c_str()),
350 MockRead(net::SYNCHRONOUS, net::OK), 346 MockRead(net::SYNCHRONOUS, net::OK),
351 }; 347 };
352 net::StaticSocketDataProvider socket_data_provider( 348 net::StaticSocketDataProvider socket_data_provider(
353 mock_reads, arraysize(mock_reads), nullptr, 0); 349 mock_reads, arraysize(mock_reads), nullptr, 0);
354 mock_socket_factory()->AddSocketDataProvider(&socket_data_provider); 350 mock_socket_factory()->AddSocketDataProvider(&socket_data_provider);
355 351
356 std::unique_ptr<net::URLRequest> request = 352 std::unique_ptr<net::URLRequest> request =
357 CreateAndExecuteRequest(GURL("http://foo.com")); 353 CreateAndExecuteRequest(GURL("http://foo.com"));
358 354
359 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 355 EXPECT_EQ(net::OK, delegate().request_status());
360 EXPECT_EQ(200, request->GetResponseCode()); 356 EXPECT_EQ(200, request->GetResponseCode());
361 EXPECT_EQ(kBody, delegate().data_received()); 357 EXPECT_EQ(kBody, delegate().data_received());
362 EXPECT_EQ(origin().host_port_pair().ToString(), 358 EXPECT_EQ(origin().host_port_pair().ToString(),
363 request->proxy_server().ToString()); 359 request->proxy_server().ToString());
364 } 360 }
365 361
366 TEST_F(DataReductionProxyInterceptorEndToEndTest, RedirectWithoutRetry) { 362 TEST_F(DataReductionProxyInterceptorEndToEndTest, RedirectWithoutRetry) {
367 // The redirect comes through the proxy and should not be retried. 363 // The redirect comes through the proxy and should not be retried.
368 MockRead redirect_mock_reads[] = { 364 MockRead redirect_mock_reads[] = {
369 MockRead("HTTP/1.1 302 Found\r\n" 365 MockRead("HTTP/1.1 302 Found\r\n"
(...skipping 13 matching lines...) Expand all
383 MockRead(kBody.c_str()), 379 MockRead(kBody.c_str()),
384 MockRead(net::SYNCHRONOUS, net::OK), 380 MockRead(net::SYNCHRONOUS, net::OK),
385 }; 381 };
386 net::StaticSocketDataProvider response_socket_data_provider( 382 net::StaticSocketDataProvider response_socket_data_provider(
387 response_mock_reads, arraysize(response_mock_reads), nullptr, 0); 383 response_mock_reads, arraysize(response_mock_reads), nullptr, 0);
388 mock_socket_factory()->AddSocketDataProvider(&response_socket_data_provider); 384 mock_socket_factory()->AddSocketDataProvider(&response_socket_data_provider);
389 385
390 std::unique_ptr<net::URLRequest> request = 386 std::unique_ptr<net::URLRequest> request =
391 CreateAndExecuteRequest(GURL("http://foo.com")); 387 CreateAndExecuteRequest(GURL("http://foo.com"));
392 388
393 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 389 EXPECT_EQ(net::OK, delegate().request_status());
394 EXPECT_EQ(200, request->GetResponseCode()); 390 EXPECT_EQ(200, request->GetResponseCode());
395 EXPECT_EQ(kBody, delegate().data_received()); 391 EXPECT_EQ(kBody, delegate().data_received());
396 EXPECT_EQ(origin().host_port_pair().ToString(), 392 EXPECT_EQ(origin().host_port_pair().ToString(),
397 request->proxy_server().ToString()); 393 request->proxy_server().ToString());
398 // The redirect should have been processed and followed normally. 394 // The redirect should have been processed and followed normally.
399 EXPECT_EQ(1, delegate().received_redirect_count()); 395 EXPECT_EQ(1, delegate().received_redirect_count());
400 } 396 }
401 397
402 TEST_F(DataReductionProxyInterceptorEndToEndTest, ResponseWithBypassAndRetry) { 398 TEST_F(DataReductionProxyInterceptorEndToEndTest, ResponseWithBypassAndRetry) {
403 // The first try gives a bypass. 399 // The first try gives a bypass.
(...skipping 14 matching lines...) Expand all
418 MockRead(kBody.c_str()), 414 MockRead(kBody.c_str()),
419 MockRead(net::SYNCHRONOUS, net::OK), 415 MockRead(net::SYNCHRONOUS, net::OK),
420 }; 416 };
421 net::StaticSocketDataProvider retry_socket_data_provider( 417 net::StaticSocketDataProvider retry_socket_data_provider(
422 retry_mock_reads, arraysize(retry_mock_reads), nullptr, 0); 418 retry_mock_reads, arraysize(retry_mock_reads), nullptr, 0);
423 mock_socket_factory()->AddSocketDataProvider(&retry_socket_data_provider); 419 mock_socket_factory()->AddSocketDataProvider(&retry_socket_data_provider);
424 420
425 std::unique_ptr<net::URLRequest> request = 421 std::unique_ptr<net::URLRequest> request =
426 CreateAndExecuteRequest(GURL("http://foo.com")); 422 CreateAndExecuteRequest(GURL("http://foo.com"));
427 423
428 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 424 EXPECT_EQ(net::OK, delegate().request_status());
429 EXPECT_EQ(200, request->GetResponseCode()); 425 EXPECT_EQ(200, request->GetResponseCode());
430 EXPECT_EQ(kBody, delegate().data_received()); 426 EXPECT_EQ(kBody, delegate().data_received());
431 EXPECT_FALSE(request->was_fetched_via_proxy()); 427 EXPECT_FALSE(request->was_fetched_via_proxy());
432 // The bypassed response should have been intercepted before the response was 428 // The bypassed response should have been intercepted before the response was
433 // processed, so only the final response after the retry should have been 429 // processed, so only the final response after the retry should have been
434 // processed. 430 // processed.
435 EXPECT_EQ(1, delegate().response_started_count()); 431 EXPECT_EQ(1, delegate().response_started_count());
436 } 432 }
437 433
438 TEST_F(DataReductionProxyInterceptorEndToEndTest, RedirectWithBypassAndRetry) { 434 TEST_F(DataReductionProxyInterceptorEndToEndTest, RedirectWithBypassAndRetry) {
(...skipping 26 matching lines...) Expand all
465 socket_data_providers.push_back( 461 socket_data_providers.push_back(
466 base::MakeUnique<net::StaticSocketDataProvider>(mock_reads, 3, nullptr, 462 base::MakeUnique<net::StaticSocketDataProvider>(mock_reads, 3, nullptr,
467 0)); 463 0));
468 mock_socket_factory()->AddSocketDataProvider( 464 mock_socket_factory()->AddSocketDataProvider(
469 socket_data_providers.back().get()); 465 socket_data_providers.back().get());
470 } 466 }
471 467
472 std::unique_ptr<net::URLRequest> request = 468 std::unique_ptr<net::URLRequest> request =
473 CreateAndExecuteRequest(GURL("http://foo.com")); 469 CreateAndExecuteRequest(GURL("http://foo.com"));
474 470
475 EXPECT_EQ(net::URLRequestStatus::SUCCESS, request->status().status()); 471 EXPECT_EQ(net::OK, delegate().request_status());
476 EXPECT_EQ(200, request->GetResponseCode()); 472 EXPECT_EQ(200, request->GetResponseCode());
477 EXPECT_EQ(kBody, delegate().data_received()); 473 EXPECT_EQ(kBody, delegate().data_received());
478 EXPECT_FALSE(request->was_fetched_via_proxy()); 474 EXPECT_FALSE(request->was_fetched_via_proxy());
479 475
480 // Each of the redirects should have been intercepted before being followed. 476 // Each of the redirects should have been intercepted before being followed.
481 EXPECT_EQ(0, delegate().received_redirect_count()); 477 EXPECT_EQ(0, delegate().received_redirect_count());
482 EXPECT_EQ(std::vector<GURL>(1, GURL("http://foo.com")), request->url_chain()); 478 EXPECT_EQ(std::vector<GURL>(1, GURL("http://foo.com")), request->url_chain());
483 } 479 }
484 480
485 TEST_F(DataReductionProxyInterceptorEndToEndTest, RedirectChainToHttps) { 481 TEST_F(DataReductionProxyInterceptorEndToEndTest, RedirectChainToHttps) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 std::vector<GURL> expected_url_chain; 516 std::vector<GURL> expected_url_chain;
521 expected_url_chain.push_back(GURL("http://music.google.com")); 517 expected_url_chain.push_back(GURL("http://music.google.com"));
522 expected_url_chain.push_back(GURL("http://play.google.com")); 518 expected_url_chain.push_back(GURL("http://play.google.com"));
523 expected_url_chain.push_back(GURL("https://play.google.com")); 519 expected_url_chain.push_back(GURL("https://play.google.com"));
524 EXPECT_EQ(expected_url_chain, request->url_chain()); 520 EXPECT_EQ(expected_url_chain, request->url_chain());
525 } 521 }
526 522
527 } // namespace 523 } // namespace
528 524
529 } // namespace data_reduction_proxy 525 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698