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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 2082513003: [Merge M52] Use correct origin when prompting for proxy authentication. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2743
Patch Set: Created 4 years, 6 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/http/http_auth_controller.cc ('k') | net/url_request/url_request_ftp_job.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 } 663 }
664 664
665 //----------------------------------------------------------------------------- 665 //-----------------------------------------------------------------------------
666 666
667 // Helper functions for validating that AuthChallengeInfo's are correctly 667 // Helper functions for validating that AuthChallengeInfo's are correctly
668 // configured for common cases. 668 // configured for common cases.
669 bool CheckBasicServerAuth(const AuthChallengeInfo* auth_challenge) { 669 bool CheckBasicServerAuth(const AuthChallengeInfo* auth_challenge) {
670 if (!auth_challenge) 670 if (!auth_challenge)
671 return false; 671 return false;
672 EXPECT_FALSE(auth_challenge->is_proxy); 672 EXPECT_FALSE(auth_challenge->is_proxy);
673 EXPECT_EQ("www.example.org:80", auth_challenge->challenger.ToString()); 673 EXPECT_EQ("http://www.example.org", auth_challenge->challenger.Serialize());
674 EXPECT_EQ("MyRealm1", auth_challenge->realm); 674 EXPECT_EQ("MyRealm1", auth_challenge->realm);
675 EXPECT_EQ(kBasicAuthScheme, auth_challenge->scheme); 675 EXPECT_EQ(kBasicAuthScheme, auth_challenge->scheme);
676 return true; 676 return true;
677 } 677 }
678 678
679 bool CheckBasicProxyAuth(const AuthChallengeInfo* auth_challenge) { 679 bool CheckBasicProxyAuth(const AuthChallengeInfo* auth_challenge) {
680 if (!auth_challenge) 680 if (!auth_challenge)
681 return false; 681 return false;
682 EXPECT_TRUE(auth_challenge->is_proxy); 682 EXPECT_TRUE(auth_challenge->is_proxy);
683 EXPECT_EQ("myproxy:70", auth_challenge->challenger.ToString()); 683 EXPECT_EQ("http://myproxy:70", auth_challenge->challenger.Serialize());
684 EXPECT_EQ("MyRealm1", auth_challenge->realm); 684 EXPECT_EQ("MyRealm1", auth_challenge->realm);
685 EXPECT_EQ(kBasicAuthScheme, auth_challenge->scheme); 685 EXPECT_EQ(kBasicAuthScheme, auth_challenge->scheme);
686 return true; 686 return true;
687 }
688
689 bool CheckBasicSecureProxyAuth(const AuthChallengeInfo* auth_challenge) {
690 if (!auth_challenge)
691 return false;
692 EXPECT_TRUE(auth_challenge->is_proxy);
693 EXPECT_EQ("https://myproxy:70", auth_challenge->challenger.Serialize());
694 EXPECT_EQ("MyRealm1", auth_challenge->realm);
695 EXPECT_EQ(kBasicAuthScheme, auth_challenge->scheme);
696 return true;
687 } 697 }
688 698
689 bool CheckDigestServerAuth(const AuthChallengeInfo* auth_challenge) { 699 bool CheckDigestServerAuth(const AuthChallengeInfo* auth_challenge) {
690 if (!auth_challenge) 700 if (!auth_challenge)
691 return false; 701 return false;
692 EXPECT_FALSE(auth_challenge->is_proxy); 702 EXPECT_FALSE(auth_challenge->is_proxy);
693 EXPECT_EQ("www.example.org:80", auth_challenge->challenger.ToString()); 703 EXPECT_EQ("http://www.example.org", auth_challenge->challenger.Serialize());
694 EXPECT_EQ("digestive", auth_challenge->realm); 704 EXPECT_EQ("digestive", auth_challenge->realm);
695 EXPECT_EQ(kDigestAuthScheme, auth_challenge->scheme); 705 EXPECT_EQ(kDigestAuthScheme, auth_challenge->scheme);
696 return true; 706 return true;
697 } 707 }
698 708
699 #if defined(NTLM_PORTABLE) 709 #if defined(NTLM_PORTABLE)
700 bool CheckNTLMServerAuth(const AuthChallengeInfo* auth_challenge) { 710 bool CheckNTLMServerAuth(const AuthChallengeInfo* auth_challenge) {
701 if (!auth_challenge) 711 if (!auth_challenge)
702 return false; 712 return false;
703 EXPECT_FALSE(auth_challenge->is_proxy); 713 EXPECT_FALSE(auth_challenge->is_proxy);
704 EXPECT_EQ("172.22.68.17:80", auth_challenge->challenger.ToString()); 714 EXPECT_EQ("http://172.22.68.17", auth_challenge->challenger.Serialize());
705 EXPECT_EQ(std::string(), auth_challenge->realm); 715 EXPECT_EQ(std::string(), auth_challenge->realm);
706 EXPECT_EQ(kNtlmAuthScheme, auth_challenge->scheme); 716 EXPECT_EQ(kNtlmAuthScheme, auth_challenge->scheme);
707 return true; 717 return true;
708 } 718 }
709 #endif // defined(NTLM_PORTABLE) 719 #endif // defined(NTLM_PORTABLE)
710 720
711 } // namespace 721 } // namespace
712 722
713 TEST_P(HttpNetworkTransactionTest, Basic) { 723 TEST_P(HttpNetworkTransactionTest, Basic) {
714 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 724 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
(...skipping 3686 matching lines...) Expand 10 before | Expand all | Expand 10 after
4401 4411
4402 rv = callback1.WaitForResult(); 4412 rv = callback1.WaitForResult();
4403 EXPECT_EQ(OK, rv); 4413 EXPECT_EQ(OK, rv);
4404 4414
4405 const HttpResponseInfo* const response = trans->GetResponseInfo(); 4415 const HttpResponseInfo* const response = trans->GetResponseInfo();
4406 4416
4407 ASSERT_TRUE(response != NULL); 4417 ASSERT_TRUE(response != NULL);
4408 ASSERT_TRUE(response->headers.get() != NULL); 4418 ASSERT_TRUE(response->headers.get() != NULL);
4409 EXPECT_EQ(407, response->headers->response_code()); 4419 EXPECT_EQ(407, response->headers->response_code());
4410 EXPECT_TRUE(response->was_fetched_via_spdy); 4420 EXPECT_TRUE(response->was_fetched_via_spdy);
4411 EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get())); 4421 EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge.get()));
4412 4422
4413 TestCompletionCallback callback2; 4423 TestCompletionCallback callback2;
4414 4424
4415 rv = trans->RestartWithAuth( 4425 rv = trans->RestartWithAuth(
4416 AuthCredentials(kFoo, kBar), callback2.callback()); 4426 AuthCredentials(kFoo, kBar), callback2.callback());
4417 EXPECT_EQ(ERR_IO_PENDING, rv); 4427 EXPECT_EQ(ERR_IO_PENDING, rv);
4418 4428
4419 rv = callback2.WaitForResult(); 4429 rv = callback2.WaitForResult();
4420 EXPECT_EQ(OK, rv); 4430 EXPECT_EQ(OK, rv);
4421 4431
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
5095 LoadTimingInfo load_timing_info; 5105 LoadTimingInfo load_timing_info;
5096 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info)); 5106 EXPECT_TRUE(trans->GetLoadTimingInfo(&load_timing_info));
5097 TestLoadTimingNotReused(load_timing_info, 5107 TestLoadTimingNotReused(load_timing_info,
5098 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY); 5108 CONNECT_TIMING_HAS_CONNECT_TIMES_ONLY);
5099 5109
5100 const HttpResponseInfo* response = trans->GetResponseInfo(); 5110 const HttpResponseInfo* response = trans->GetResponseInfo();
5101 ASSERT_TRUE(response != NULL); 5111 ASSERT_TRUE(response != NULL);
5102 ASSERT_FALSE(response->headers.get() == NULL); 5112 ASSERT_FALSE(response->headers.get() == NULL);
5103 EXPECT_EQ(407, response->headers->response_code()); 5113 EXPECT_EQ(407, response->headers->response_code());
5104 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); 5114 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
5105 EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get())); 5115 EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge.get()));
5106 5116
5107 TestCompletionCallback callback2; 5117 TestCompletionCallback callback2;
5108 5118
5109 rv = trans->RestartWithAuth( 5119 rv = trans->RestartWithAuth(
5110 AuthCredentials(kFoo, kBar), callback2.callback()); 5120 AuthCredentials(kFoo, kBar), callback2.callback());
5111 EXPECT_EQ(ERR_IO_PENDING, rv); 5121 EXPECT_EQ(ERR_IO_PENDING, rv);
5112 5122
5113 rv = callback2.WaitForResult(); 5123 rv = callback2.WaitForResult();
5114 EXPECT_EQ(OK, rv); 5124 EXPECT_EQ(OK, rv);
5115 5125
(...skipping 1560 matching lines...) Expand 10 before | Expand all | Expand 10 after
6676 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 6686 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
6677 EXPECT_EQ(ERR_IO_PENDING, rv); 6687 EXPECT_EQ(ERR_IO_PENDING, rv);
6678 6688
6679 rv = callback1.WaitForResult(); 6689 rv = callback1.WaitForResult();
6680 EXPECT_EQ(OK, rv); 6690 EXPECT_EQ(OK, rv);
6681 6691
6682 const HttpResponseInfo* response = trans->GetResponseInfo(); 6692 const HttpResponseInfo* response = trans->GetResponseInfo();
6683 ASSERT_TRUE(response != NULL); 6693 ASSERT_TRUE(response != NULL);
6684 ASSERT_TRUE(response->auth_challenge.get()); 6694 ASSERT_TRUE(response->auth_challenge.get());
6685 EXPECT_FALSE(response->auth_challenge->is_proxy); 6695 EXPECT_FALSE(response->auth_challenge->is_proxy);
6686 EXPECT_EQ("www.example.org:80", 6696 EXPECT_EQ("http://www.example.org",
6687 response->auth_challenge->challenger.ToString()); 6697 response->auth_challenge->challenger.Serialize());
6688 EXPECT_EQ("MyRealm2", response->auth_challenge->realm); 6698 EXPECT_EQ("MyRealm2", response->auth_challenge->realm);
6689 EXPECT_EQ(kBasicAuthScheme, response->auth_challenge->scheme); 6699 EXPECT_EQ(kBasicAuthScheme, response->auth_challenge->scheme);
6690 6700
6691 TestCompletionCallback callback2; 6701 TestCompletionCallback callback2;
6692 6702
6693 rv = trans->RestartWithAuth( 6703 rv = trans->RestartWithAuth(
6694 AuthCredentials(kFoo2, kBar2), callback2.callback()); 6704 AuthCredentials(kFoo2, kBar2), callback2.callback());
6695 EXPECT_EQ(ERR_IO_PENDING, rv); 6705 EXPECT_EQ(ERR_IO_PENDING, rv);
6696 6706
6697 rv = callback2.WaitForResult(); 6707 rv = callback2.WaitForResult();
(...skipping 952 matching lines...) Expand 10 before | Expand all | Expand 10 after
7650 entries, pos, 7660 entries, pos,
7651 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS, 7661 NetLog::TYPE_HTTP_TRANSACTION_READ_TUNNEL_RESPONSE_HEADERS,
7652 NetLog::PHASE_NONE); 7662 NetLog::PHASE_NONE);
7653 7663
7654 const HttpResponseInfo* response = trans->GetResponseInfo(); 7664 const HttpResponseInfo* response = trans->GetResponseInfo();
7655 ASSERT_TRUE(response != NULL); 7665 ASSERT_TRUE(response != NULL);
7656 ASSERT_FALSE(response->headers.get() == NULL); 7666 ASSERT_FALSE(response->headers.get() == NULL);
7657 EXPECT_EQ(407, response->headers->response_code()); 7667 EXPECT_EQ(407, response->headers->response_code());
7658 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); 7668 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion());
7659 EXPECT_TRUE(response->auth_challenge.get() != NULL); 7669 EXPECT_TRUE(response->auth_challenge.get() != NULL);
7660 EXPECT_TRUE(CheckBasicProxyAuth(response->auth_challenge.get())); 7670 EXPECT_TRUE(CheckBasicSecureProxyAuth(response->auth_challenge.get()));
7661 7671
7662 TestCompletionCallback callback2; 7672 TestCompletionCallback callback2;
7663 7673
7664 rv = trans->RestartWithAuth(AuthCredentials(kFoo, kBar), 7674 rv = trans->RestartWithAuth(AuthCredentials(kFoo, kBar),
7665 callback2.callback()); 7675 callback2.callback());
7666 EXPECT_EQ(ERR_IO_PENDING, rv); 7676 EXPECT_EQ(ERR_IO_PENDING, rv);
7667 7677
7668 rv = callback2.WaitForResult(); 7678 rv = callback2.WaitForResult();
7669 EXPECT_EQ(OK, rv); 7679 EXPECT_EQ(OK, rv);
7670 7680
(...skipping 1924 matching lines...) Expand 10 before | Expand all | Expand 10 after
9595 // transaction completes. 9605 // transaction completes.
9596 int rv = trans->Start(&request, callback1.callback(), BoundNetLog()); 9606 int rv = trans->Start(&request, callback1.callback(), BoundNetLog());
9597 EXPECT_EQ(ERR_IO_PENDING, rv); 9607 EXPECT_EQ(ERR_IO_PENDING, rv);
9598 rv = callback1.WaitForResult(); 9608 rv = callback1.WaitForResult();
9599 EXPECT_EQ(OK, rv); 9609 EXPECT_EQ(OK, rv);
9600 const HttpResponseInfo* response = trans->GetResponseInfo(); 9610 const HttpResponseInfo* response = trans->GetResponseInfo();
9601 ASSERT_TRUE(response != NULL); 9611 ASSERT_TRUE(response != NULL);
9602 const AuthChallengeInfo* challenge = response->auth_challenge.get(); 9612 const AuthChallengeInfo* challenge = response->auth_challenge.get();
9603 ASSERT_FALSE(challenge == NULL); 9613 ASSERT_FALSE(challenge == NULL);
9604 EXPECT_FALSE(challenge->is_proxy); 9614 EXPECT_FALSE(challenge->is_proxy);
9605 EXPECT_EQ("www.example.org:80", challenge->challenger.ToString()); 9615 EXPECT_EQ("http://www.example.org", challenge->challenger.Serialize());
9606 EXPECT_EQ("first_realm", challenge->realm); 9616 EXPECT_EQ("first_realm", challenge->realm);
9607 EXPECT_EQ(kBasicAuthScheme, challenge->scheme); 9617 EXPECT_EQ(kBasicAuthScheme, challenge->scheme);
9608 9618
9609 // Issue the second request with an incorrect password. There should be a 9619 // Issue the second request with an incorrect password. There should be a
9610 // password prompt for second_realm waiting to be filled in after the 9620 // password prompt for second_realm waiting to be filled in after the
9611 // transaction completes. 9621 // transaction completes.
9612 TestCompletionCallback callback2; 9622 TestCompletionCallback callback2;
9613 rv = trans->RestartWithAuth( 9623 rv = trans->RestartWithAuth(
9614 AuthCredentials(kFirst, kBaz), callback2.callback()); 9624 AuthCredentials(kFirst, kBaz), callback2.callback());
9615 EXPECT_EQ(ERR_IO_PENDING, rv); 9625 EXPECT_EQ(ERR_IO_PENDING, rv);
9616 rv = callback2.WaitForResult(); 9626 rv = callback2.WaitForResult();
9617 EXPECT_EQ(OK, rv); 9627 EXPECT_EQ(OK, rv);
9618 response = trans->GetResponseInfo(); 9628 response = trans->GetResponseInfo();
9619 ASSERT_TRUE(response != NULL); 9629 ASSERT_TRUE(response != NULL);
9620 challenge = response->auth_challenge.get(); 9630 challenge = response->auth_challenge.get();
9621 ASSERT_FALSE(challenge == NULL); 9631 ASSERT_FALSE(challenge == NULL);
9622 EXPECT_FALSE(challenge->is_proxy); 9632 EXPECT_FALSE(challenge->is_proxy);
9623 EXPECT_EQ("www.example.org:80", challenge->challenger.ToString()); 9633 EXPECT_EQ("http://www.example.org", challenge->challenger.Serialize());
9624 EXPECT_EQ("second_realm", challenge->realm); 9634 EXPECT_EQ("second_realm", challenge->realm);
9625 EXPECT_EQ(kBasicAuthScheme, challenge->scheme); 9635 EXPECT_EQ(kBasicAuthScheme, challenge->scheme);
9626 9636
9627 // Issue the third request with another incorrect password. There should be 9637 // Issue the third request with another incorrect password. There should be
9628 // a password prompt for first_realm waiting to be filled in. If the password 9638 // a password prompt for first_realm waiting to be filled in. If the password
9629 // prompt is not present, it indicates that the HttpAuthCacheEntry for 9639 // prompt is not present, it indicates that the HttpAuthCacheEntry for
9630 // first_realm was not correctly removed. 9640 // first_realm was not correctly removed.
9631 TestCompletionCallback callback3; 9641 TestCompletionCallback callback3;
9632 rv = trans->RestartWithAuth( 9642 rv = trans->RestartWithAuth(
9633 AuthCredentials(kSecond, kFou), callback3.callback()); 9643 AuthCredentials(kSecond, kFou), callback3.callback());
9634 EXPECT_EQ(ERR_IO_PENDING, rv); 9644 EXPECT_EQ(ERR_IO_PENDING, rv);
9635 rv = callback3.WaitForResult(); 9645 rv = callback3.WaitForResult();
9636 EXPECT_EQ(OK, rv); 9646 EXPECT_EQ(OK, rv);
9637 response = trans->GetResponseInfo(); 9647 response = trans->GetResponseInfo();
9638 ASSERT_TRUE(response != NULL); 9648 ASSERT_TRUE(response != NULL);
9639 challenge = response->auth_challenge.get(); 9649 challenge = response->auth_challenge.get();
9640 ASSERT_FALSE(challenge == NULL); 9650 ASSERT_FALSE(challenge == NULL);
9641 EXPECT_FALSE(challenge->is_proxy); 9651 EXPECT_FALSE(challenge->is_proxy);
9642 EXPECT_EQ("www.example.org:80", challenge->challenger.ToString()); 9652 EXPECT_EQ("http://www.example.org", challenge->challenger.Serialize());
9643 EXPECT_EQ("first_realm", challenge->realm); 9653 EXPECT_EQ("first_realm", challenge->realm);
9644 EXPECT_EQ(kBasicAuthScheme, challenge->scheme); 9654 EXPECT_EQ(kBasicAuthScheme, challenge->scheme);
9645 9655
9646 // Issue the fourth request with the correct password and username. 9656 // Issue the fourth request with the correct password and username.
9647 TestCompletionCallback callback4; 9657 TestCompletionCallback callback4;
9648 rv = trans->RestartWithAuth( 9658 rv = trans->RestartWithAuth(
9649 AuthCredentials(kFirst, kBar), callback4.callback()); 9659 AuthCredentials(kFirst, kBar), callback4.callback());
9650 EXPECT_EQ(ERR_IO_PENDING, rv); 9660 EXPECT_EQ(ERR_IO_PENDING, rv);
9651 rv = callback4.WaitForResult(); 9661 rv = callback4.WaitForResult();
9652 EXPECT_EQ(OK, rv); 9662 EXPECT_EQ(OK, rv);
(...skipping 6464 matching lines...) Expand 10 before | Expand all | Expand 10 after
16117 base::MessageLoop::current()->RunUntilIdle(); 16127 base::MessageLoop::current()->RunUntilIdle();
16118 16128
16119 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 16129 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
16120 HttpRequestHeaders headers; 16130 HttpRequestHeaders headers;
16121 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 16131 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
16122 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 16132 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
16123 } 16133 }
16124 #endif // !defined(OS_IOS) 16134 #endif // !defined(OS_IOS)
16125 16135
16126 } // namespace net 16136 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_auth_controller.cc ('k') | net/url_request/url_request_ftp_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698