| OLD | NEW |
| 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 4118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4129 ASSERT_TRUE(response); | 4129 ASSERT_TRUE(response); |
| 4130 ASSERT_TRUE(response->headers); | 4130 ASSERT_TRUE(response->headers); |
| 4131 EXPECT_EQ(407, response->headers->response_code()); | 4131 EXPECT_EQ(407, response->headers->response_code()); |
| 4132 EXPECT_FALSE(trans->IsReadyToRestartForAuth()); | 4132 EXPECT_FALSE(trans->IsReadyToRestartForAuth()); |
| 4133 EXPECT_TRUE(response->auth_challenge); | 4133 EXPECT_TRUE(response->auth_challenge); |
| 4134 | 4134 |
| 4135 trans.reset(); | 4135 trans.reset(); |
| 4136 session->CloseAllConnections(); | 4136 session->CloseAllConnections(); |
| 4137 } | 4137 } |
| 4138 | 4138 |
| 4139 // A more nuanced test than GenerateAuthToken test which asserts that |
| 4140 // ERR_INVALID_AUTH_CREDENTIALS does not cause the auth scheme to be |
| 4141 // unnecessarily invalidated, and that if the server co-operates, the |
| 4142 // authentication handshake can continue with the same scheme but with a |
| 4143 // different identity. |
| 4144 TEST_F(HttpNetworkTransactionTest, NonPermanentGenerateAuthTokenError) { |
| 4145 HttpRequestInfo request; |
| 4146 request.method = "GET"; |
| 4147 request.url = GURL("http://www.example.org/"); |
| 4148 |
| 4149 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( |
| 4150 new HttpAuthHandlerMock::Factory()); |
| 4151 auth_handler_factory->set_do_init_from_challenge(true); |
| 4152 |
| 4153 // First handler. Uses default credentials, but barfs at generate auth token. |
| 4154 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); |
| 4155 mock_handler->set_allows_default_credentials(true); |
| 4156 mock_handler->set_allows_explicit_credentials(true); |
| 4157 mock_handler->set_connection_based(true); |
| 4158 mock_handler->SetGenerateExpectation(true, ERR_INVALID_AUTH_CREDENTIALS); |
| 4159 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4160 HttpAuth::AUTH_SERVER); |
| 4161 |
| 4162 // Add another handler for the second challenge. It supports default |
| 4163 // credentials, but they shouldn't be used, since they were already tried. |
| 4164 mock_handler.reset(new HttpAuthHandlerMock()); |
| 4165 mock_handler->set_allows_default_credentials(true); |
| 4166 mock_handler->set_allows_explicit_credentials(true); |
| 4167 mock_handler->set_connection_based(true); |
| 4168 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4169 HttpAuth::AUTH_SERVER); |
| 4170 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 4171 |
| 4172 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 4173 |
| 4174 MockWrite data_writes1[] = { |
| 4175 MockWrite("GET / HTTP/1.1\r\n" |
| 4176 "Host: www.example.org\r\n" |
| 4177 "Connection: keep-alive\r\n\r\n"), |
| 4178 }; |
| 4179 |
| 4180 MockRead data_reads1[] = { |
| 4181 MockRead("HTTP/1.1 401 Authentication Required\r\n" |
| 4182 "WWW-Authenticate: Mock\r\n" |
| 4183 "Connection: keep-alive\r\n\r\n"), |
| 4184 }; |
| 4185 |
| 4186 // Identical to data_writes1[]. The AuthHandler encounters a |
| 4187 // ERR_INVALID_AUTH_CREDENTIALS during the GenerateAuthToken stage, so the |
| 4188 // transaction procceds without an authorization header. |
| 4189 MockWrite data_writes2[] = { |
| 4190 MockWrite("GET / HTTP/1.1\r\n" |
| 4191 "Host: www.example.org\r\n" |
| 4192 "Connection: keep-alive\r\n\r\n"), |
| 4193 }; |
| 4194 |
| 4195 MockRead data_reads2[] = { |
| 4196 MockRead("HTTP/1.1 401 Authentication Required\r\n" |
| 4197 "WWW-Authenticate: Mock\r\n" |
| 4198 "Connection: keep-alive\r\n\r\n"), |
| 4199 }; |
| 4200 |
| 4201 MockWrite data_writes3[] = { |
| 4202 MockWrite("GET / HTTP/1.1\r\n" |
| 4203 "Host: www.example.org\r\n" |
| 4204 "Connection: keep-alive\r\n" |
| 4205 "Authorization: auth_token\r\n\r\n"), |
| 4206 }; |
| 4207 |
| 4208 MockRead data_reads3[] = { |
| 4209 MockRead("HTTP/1.1 200 OK\r\n" |
| 4210 "Content-Length: 5\r\n" |
| 4211 "Content-Type: text/plain\r\n" |
| 4212 "Connection: keep-alive\r\n\r\n" |
| 4213 "Hello"), |
| 4214 }; |
| 4215 |
| 4216 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4217 data_writes1, arraysize(data_writes1)); |
| 4218 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4219 |
| 4220 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4221 data_writes2, arraysize(data_writes2)); |
| 4222 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 4223 |
| 4224 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
| 4225 data_writes3, arraysize(data_writes3)); |
| 4226 session_deps_.socket_factory->AddSocketDataProvider(&data3); |
| 4227 |
| 4228 std::unique_ptr<HttpNetworkTransaction> trans( |
| 4229 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 4230 |
| 4231 TestCompletionCallback callback; |
| 4232 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 4233 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4234 |
| 4235 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 4236 ASSERT_TRUE(response); |
| 4237 ASSERT_TRUE(response->headers); |
| 4238 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); |
| 4239 |
| 4240 // The following three tests assert that an authentication challenge was |
| 4241 // received and that the stack is ready to respond to the challenge using |
| 4242 // ambient credentials. |
| 4243 EXPECT_EQ(401, response->headers->response_code()); |
| 4244 EXPECT_TRUE(trans->IsReadyToRestartForAuth()); |
| 4245 EXPECT_FALSE(response->auth_challenge); |
| 4246 |
| 4247 rv = trans->RestartWithAuth(AuthCredentials(), callback.callback()); |
| 4248 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4249 response = trans->GetResponseInfo(); |
| 4250 ASSERT_TRUE(response); |
| 4251 ASSERT_TRUE(response->headers); |
| 4252 |
| 4253 // The following three tests assert that an authentication challenge was |
| 4254 // received and that the stack needs explicit credentials before it is ready |
| 4255 // to respond to the challenge. |
| 4256 EXPECT_EQ(401, response->headers->response_code()); |
| 4257 EXPECT_FALSE(trans->IsReadyToRestartForAuth()); |
| 4258 EXPECT_TRUE(response->auth_challenge); |
| 4259 |
| 4260 rv = trans->RestartWithAuth(AuthCredentials(), callback.callback()); |
| 4261 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4262 response = trans->GetResponseInfo(); |
| 4263 ASSERT_TRUE(response); |
| 4264 ASSERT_TRUE(response->headers); |
| 4265 EXPECT_EQ(200, response->headers->response_code()); |
| 4266 |
| 4267 trans.reset(); |
| 4268 session->CloseAllConnections(); |
| 4269 } |
| 4270 |
| 4139 // Test the load timing for HTTPS requests with an HTTP proxy. | 4271 // Test the load timing for HTTPS requests with an HTTP proxy. |
| 4140 TEST_F(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { | 4272 TEST_F(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { |
| 4141 HttpRequestInfo request1; | 4273 HttpRequestInfo request1; |
| 4142 request1.method = "GET"; | 4274 request1.method = "GET"; |
| 4143 request1.url = GURL("https://www.example.org/1"); | 4275 request1.url = GURL("https://www.example.org/1"); |
| 4144 | 4276 |
| 4145 HttpRequestInfo request2; | 4277 HttpRequestInfo request2; |
| 4146 request2.method = "GET"; | 4278 request2.method = "GET"; |
| 4147 request2.url = GURL("https://www.example.org/2"); | 4279 request2.url = GURL("https://www.example.org/2"); |
| 4148 | 4280 |
| (...skipping 7249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11398 | 11530 |
| 11399 struct TestConfig { | 11531 struct TestConfig { |
| 11400 const char* const proxy_url; | 11532 const char* const proxy_url; |
| 11401 AuthTiming proxy_auth_timing; | 11533 AuthTiming proxy_auth_timing; |
| 11402 int proxy_auth_rv; | 11534 int proxy_auth_rv; |
| 11403 const char* const server_url; | 11535 const char* const server_url; |
| 11404 AuthTiming server_auth_timing; | 11536 AuthTiming server_auth_timing; |
| 11405 int server_auth_rv; | 11537 int server_auth_rv; |
| 11406 int num_auth_rounds; | 11538 int num_auth_rounds; |
| 11407 int first_ssl_round; | 11539 int first_ssl_round; |
| 11408 TestRound rounds[3]; | 11540 TestRound rounds[4]; |
| 11409 } test_configs[] = { | 11541 } test_configs[] = { |
| 11410 // Non-authenticating HTTP server with a direct connection. | 11542 // Non-authenticating HTTP server with a direct connection. |
| 11411 {NULL, | 11543 {NULL, |
| 11412 AUTH_NONE, | 11544 AUTH_NONE, |
| 11413 OK, | 11545 OK, |
| 11414 kServer, | 11546 kServer, |
| 11415 AUTH_NONE, | 11547 AUTH_NONE, |
| 11416 OK, | 11548 OK, |
| 11417 1, | 11549 1, |
| 11418 kNoSSL, | 11550 kNoSSL, |
| 11419 {TestRound(kGet, kSuccess, OK)}}, | 11551 {TestRound(kGet, kSuccess, OK)}}, |
| 11420 // Authenticating HTTP server with a direct connection. | 11552 // Authenticating HTTP server with a direct connection. |
| 11421 {NULL, | 11553 {NULL, |
| 11422 AUTH_NONE, | 11554 AUTH_NONE, |
| 11423 OK, | 11555 OK, |
| 11424 kServer, | 11556 kServer, |
| 11425 AUTH_SYNC, | 11557 AUTH_SYNC, |
| 11426 OK, | 11558 OK, |
| 11427 2, | 11559 2, |
| 11428 kNoSSL, | 11560 kNoSSL, |
| 11429 {TestRound(kGet, kServerChallenge, OK), | 11561 {TestRound(kGet, kServerChallenge, OK), |
| 11430 TestRound(kGetAuth, kSuccess, OK)}}, | 11562 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11431 {NULL, | 11563 {NULL, |
| 11432 AUTH_NONE, | 11564 AUTH_NONE, |
| 11433 OK, | 11565 OK, |
| 11434 kServer, | 11566 kServer, |
| 11435 AUTH_SYNC, | 11567 AUTH_SYNC, |
| 11436 ERR_INVALID_AUTH_CREDENTIALS, | 11568 ERR_INVALID_AUTH_CREDENTIALS, |
| 11569 3, |
| 11570 kNoSSL, |
| 11571 {TestRound(kGet, kServerChallenge, OK), |
| 11572 TestRound(kGet, kServerChallenge, OK), |
| 11573 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11574 {NULL, |
| 11575 AUTH_NONE, |
| 11576 OK, |
| 11577 kServer, |
| 11578 AUTH_SYNC, |
| 11579 ERR_UNSUPPORTED_AUTH_SCHEME, |
| 11580 2, |
| 11581 kNoSSL, |
| 11582 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11583 {NULL, |
| 11584 AUTH_NONE, |
| 11585 OK, |
| 11586 kServer, |
| 11587 AUTH_SYNC, |
| 11588 ERR_UNDOCUMENTED_SECURITY_LIBRARY_STATUS, |
| 11589 2, |
| 11590 kNoSSL, |
| 11591 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11592 {kProxy, |
| 11593 AUTH_SYNC, |
| 11594 ERR_FAILED, |
| 11595 kServer, |
| 11596 AUTH_NONE, |
| 11597 OK, |
| 11598 2, |
| 11599 kNoSSL, |
| 11600 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11601 TestRound(kGetProxy, kFailure, ERR_FAILED)}}, |
| 11602 {kProxy, |
| 11603 AUTH_ASYNC, |
| 11604 ERR_FAILED, |
| 11605 kServer, |
| 11606 AUTH_NONE, |
| 11607 OK, |
| 11608 2, |
| 11609 kNoSSL, |
| 11610 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11611 TestRound(kGetProxy, kFailure, ERR_FAILED)}}, |
| 11612 {NULL, |
| 11613 AUTH_NONE, |
| 11614 OK, |
| 11615 kServer, |
| 11616 AUTH_SYNC, |
| 11617 ERR_FAILED, |
| 11437 2, | 11618 2, |
| 11438 kNoSSL, | 11619 kNoSSL, |
| 11439 {TestRound(kGet, kServerChallenge, OK), | 11620 {TestRound(kGet, kServerChallenge, OK), |
| 11440 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11621 TestRound(kGet, kFailure, ERR_FAILED)}}, |
| 11441 {NULL, | 11622 {NULL, |
| 11442 AUTH_NONE, | 11623 AUTH_NONE, |
| 11443 OK, | 11624 OK, |
| 11625 kServer, |
| 11626 AUTH_ASYNC, |
| 11627 ERR_FAILED, |
| 11628 2, |
| 11629 kNoSSL, |
| 11630 {TestRound(kGet, kServerChallenge, OK), |
| 11631 TestRound(kGet, kFailure, ERR_FAILED)}}, |
| 11632 {NULL, |
| 11633 AUTH_NONE, |
| 11634 OK, |
| 11444 kServer, | 11635 kServer, |
| 11445 AUTH_ASYNC, | 11636 AUTH_ASYNC, |
| 11446 OK, | 11637 OK, |
| 11447 2, | 11638 2, |
| 11448 kNoSSL, | 11639 kNoSSL, |
| 11449 {TestRound(kGet, kServerChallenge, OK), | 11640 {TestRound(kGet, kServerChallenge, OK), |
| 11450 TestRound(kGetAuth, kSuccess, OK)}}, | 11641 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11451 {NULL, | 11642 {NULL, |
| 11452 AUTH_NONE, | 11643 AUTH_NONE, |
| 11453 OK, | 11644 OK, |
| 11454 kServer, | 11645 kServer, |
| 11455 AUTH_ASYNC, | 11646 AUTH_ASYNC, |
| 11456 ERR_INVALID_AUTH_CREDENTIALS, | 11647 ERR_INVALID_AUTH_CREDENTIALS, |
| 11457 2, | 11648 3, |
| 11458 kNoSSL, | 11649 kNoSSL, |
| 11459 {TestRound(kGet, kServerChallenge, OK), | 11650 {TestRound(kGet, kServerChallenge, OK), |
| 11460 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11651 // The second round uses a HttpAuthHandlerMock that always succeeds. |
| 11652 TestRound(kGet, kServerChallenge, OK), |
| 11653 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11461 // Non-authenticating HTTP server through a non-authenticating proxy. | 11654 // Non-authenticating HTTP server through a non-authenticating proxy. |
| 11462 {kProxy, | 11655 {kProxy, |
| 11463 AUTH_NONE, | 11656 AUTH_NONE, |
| 11464 OK, | 11657 OK, |
| 11465 kServer, | 11658 kServer, |
| 11466 AUTH_NONE, | 11659 AUTH_NONE, |
| 11467 OK, | 11660 OK, |
| 11468 1, | 11661 1, |
| 11469 kNoSSL, | 11662 kNoSSL, |
| 11470 {TestRound(kGetProxy, kSuccess, OK)}}, | 11663 {TestRound(kGetProxy, kSuccess, OK)}}, |
| 11471 // Authenticating HTTP server through a non-authenticating proxy. | 11664 // Authenticating HTTP server through a non-authenticating proxy. |
| 11472 {kProxy, | 11665 {kProxy, |
| 11473 AUTH_NONE, | 11666 AUTH_NONE, |
| 11474 OK, | 11667 OK, |
| 11475 kServer, | 11668 kServer, |
| 11476 AUTH_SYNC, | 11669 AUTH_SYNC, |
| 11477 OK, | 11670 OK, |
| 11478 2, | 11671 2, |
| 11479 kNoSSL, | 11672 kNoSSL, |
| 11480 {TestRound(kGetProxy, kServerChallenge, OK), | 11673 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11481 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, | 11674 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, |
| 11482 {kProxy, | 11675 {kProxy, |
| 11483 AUTH_NONE, | 11676 AUTH_NONE, |
| 11484 OK, | 11677 OK, |
| 11485 kServer, | 11678 kServer, |
| 11486 AUTH_SYNC, | 11679 AUTH_SYNC, |
| 11487 ERR_INVALID_AUTH_CREDENTIALS, | 11680 ERR_INVALID_AUTH_CREDENTIALS, |
| 11488 2, | 11681 3, |
| 11489 kNoSSL, | 11682 kNoSSL, |
| 11490 {TestRound(kGetProxy, kServerChallenge, OK), | 11683 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11491 TestRound(kGetAuthThroughProxy, kFailure, | 11684 TestRound(kGetProxy, kServerChallenge, OK), |
| 11492 ERR_INVALID_AUTH_CREDENTIALS)}}, | 11685 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, |
| 11493 {kProxy, | 11686 {kProxy, |
| 11494 AUTH_NONE, | 11687 AUTH_NONE, |
| 11495 OK, | 11688 OK, |
| 11496 kServer, | 11689 kServer, |
| 11497 AUTH_ASYNC, | 11690 AUTH_ASYNC, |
| 11498 OK, | 11691 OK, |
| 11499 2, | 11692 2, |
| 11500 kNoSSL, | 11693 kNoSSL, |
| 11501 {TestRound(kGetProxy, kServerChallenge, OK), | 11694 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11502 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, | 11695 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, |
| 11503 {kProxy, | 11696 {kProxy, |
| 11504 AUTH_NONE, | 11697 AUTH_NONE, |
| 11505 OK, | 11698 OK, |
| 11506 kServer, | 11699 kServer, |
| 11507 AUTH_ASYNC, | 11700 AUTH_ASYNC, |
| 11508 ERR_INVALID_AUTH_CREDENTIALS, | 11701 ERR_INVALID_AUTH_CREDENTIALS, |
| 11509 2, | 11702 2, |
| 11510 kNoSSL, | 11703 kNoSSL, |
| 11511 {TestRound(kGetProxy, kServerChallenge, OK), | 11704 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11512 TestRound(kGetAuthThroughProxy, kFailure, | 11705 TestRound(kGetProxy, kSuccess, OK)}}, |
| 11513 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11514 // Non-authenticating HTTP server through an authenticating proxy. | 11706 // Non-authenticating HTTP server through an authenticating proxy. |
| 11515 {kProxy, | 11707 {kProxy, |
| 11516 AUTH_SYNC, | 11708 AUTH_SYNC, |
| 11517 OK, | 11709 OK, |
| 11518 kServer, | 11710 kServer, |
| 11519 AUTH_NONE, | 11711 AUTH_NONE, |
| 11520 OK, | 11712 OK, |
| 11521 2, | 11713 2, |
| 11522 kNoSSL, | 11714 kNoSSL, |
| 11523 {TestRound(kGetProxy, kProxyChallenge, OK), | 11715 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11524 TestRound(kGetProxyAuth, kSuccess, OK)}}, | 11716 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11525 {kProxy, | 11717 {kProxy, |
| 11526 AUTH_SYNC, | 11718 AUTH_SYNC, |
| 11527 ERR_INVALID_AUTH_CREDENTIALS, | 11719 ERR_INVALID_AUTH_CREDENTIALS, |
| 11528 kServer, | 11720 kServer, |
| 11529 AUTH_NONE, | 11721 AUTH_NONE, |
| 11530 OK, | 11722 OK, |
| 11531 2, | 11723 2, |
| 11532 kNoSSL, | 11724 kNoSSL, |
| 11533 {TestRound(kGetProxy, kProxyChallenge, OK), | 11725 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11534 TestRound(kGetProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11726 TestRound(kGetProxy, kSuccess, OK)}}, |
| 11535 {kProxy, | 11727 {kProxy, |
| 11536 AUTH_ASYNC, | 11728 AUTH_ASYNC, |
| 11537 OK, | 11729 OK, |
| 11538 kServer, | 11730 kServer, |
| 11539 AUTH_NONE, | 11731 AUTH_NONE, |
| 11540 OK, | 11732 OK, |
| 11541 2, | 11733 2, |
| 11542 kNoSSL, | 11734 kNoSSL, |
| 11543 {TestRound(kGetProxy, kProxyChallenge, OK), | 11735 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11544 TestRound(kGetProxyAuth, kSuccess, OK)}}, | 11736 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11545 {kProxy, | 11737 {kProxy, |
| 11546 AUTH_ASYNC, | 11738 AUTH_ASYNC, |
| 11547 ERR_INVALID_AUTH_CREDENTIALS, | 11739 ERR_INVALID_AUTH_CREDENTIALS, |
| 11548 kServer, | 11740 kServer, |
| 11549 AUTH_NONE, | 11741 AUTH_NONE, |
| 11550 OK, | 11742 OK, |
| 11551 2, | 11743 2, |
| 11552 kNoSSL, | 11744 kNoSSL, |
| 11553 {TestRound(kGetProxy, kProxyChallenge, OK), | 11745 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11554 TestRound(kGetProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11746 TestRound(kGetProxy, kSuccess, OK)}}, |
| 11555 // Authenticating HTTP server through an authenticating proxy. | 11747 // Authenticating HTTP server through an authenticating proxy. |
| 11556 {kProxy, | 11748 {kProxy, |
| 11557 AUTH_SYNC, | 11749 AUTH_SYNC, |
| 11558 OK, | 11750 OK, |
| 11559 kServer, | 11751 kServer, |
| 11560 AUTH_SYNC, | 11752 AUTH_SYNC, |
| 11561 OK, | 11753 OK, |
| 11562 3, | 11754 3, |
| 11563 kNoSSL, | 11755 kNoSSL, |
| 11564 {TestRound(kGetProxy, kProxyChallenge, OK), | 11756 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11565 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11757 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11566 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11758 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11567 {kProxy, | 11759 {kProxy, |
| 11568 AUTH_SYNC, | 11760 AUTH_SYNC, |
| 11569 OK, | 11761 OK, |
| 11570 kServer, | 11762 kServer, |
| 11571 AUTH_SYNC, | 11763 AUTH_SYNC, |
| 11572 ERR_INVALID_AUTH_CREDENTIALS, | 11764 ERR_INVALID_AUTH_CREDENTIALS, |
| 11573 3, | 11765 3, |
| 11574 kNoSSL, | 11766 kNoSSL, |
| 11575 {TestRound(kGetProxy, kProxyChallenge, OK), | 11767 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11576 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11768 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11577 TestRound(kGetAuthWithProxyAuth, kFailure, | 11769 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11578 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11579 {kProxy, | 11770 {kProxy, |
| 11580 AUTH_ASYNC, | 11771 AUTH_ASYNC, |
| 11581 OK, | 11772 OK, |
| 11582 kServer, | 11773 kServer, |
| 11583 AUTH_SYNC, | 11774 AUTH_SYNC, |
| 11584 OK, | 11775 OK, |
| 11585 3, | 11776 3, |
| 11586 kNoSSL, | 11777 kNoSSL, |
| 11587 {TestRound(kGetProxy, kProxyChallenge, OK), | 11778 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11588 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11779 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11589 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11780 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11590 {kProxy, | 11781 {kProxy, |
| 11591 AUTH_ASYNC, | 11782 AUTH_ASYNC, |
| 11592 OK, | 11783 OK, |
| 11593 kServer, | 11784 kServer, |
| 11594 AUTH_SYNC, | 11785 AUTH_SYNC, |
| 11595 ERR_INVALID_AUTH_CREDENTIALS, | 11786 ERR_INVALID_AUTH_CREDENTIALS, |
| 11596 3, | 11787 3, |
| 11597 kNoSSL, | 11788 kNoSSL, |
| 11598 {TestRound(kGetProxy, kProxyChallenge, OK), | 11789 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11599 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11790 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11600 TestRound(kGetAuthWithProxyAuth, kFailure, | 11791 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11601 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11602 {kProxy, | 11792 {kProxy, |
| 11603 AUTH_SYNC, | 11793 AUTH_SYNC, |
| 11604 OK, | 11794 OK, |
| 11605 kServer, | 11795 kServer, |
| 11606 AUTH_ASYNC, | 11796 AUTH_ASYNC, |
| 11607 OK, | 11797 OK, |
| 11608 3, | 11798 3, |
| 11609 kNoSSL, | 11799 kNoSSL, |
| 11610 {TestRound(kGetProxy, kProxyChallenge, OK), | 11800 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11611 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11801 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11612 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11802 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11613 {kProxy, | 11803 {kProxy, |
| 11614 AUTH_SYNC, | 11804 AUTH_SYNC, |
| 11615 OK, | 11805 OK, |
| 11616 kServer, | 11806 kServer, |
| 11617 AUTH_ASYNC, | 11807 AUTH_ASYNC, |
| 11618 ERR_INVALID_AUTH_CREDENTIALS, | 11808 ERR_INVALID_AUTH_CREDENTIALS, |
| 11619 3, | 11809 3, |
| 11620 kNoSSL, | 11810 kNoSSL, |
| 11621 {TestRound(kGetProxy, kProxyChallenge, OK), | 11811 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11622 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11812 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11623 TestRound(kGetAuthWithProxyAuth, kFailure, | 11813 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11624 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11625 {kProxy, | 11814 {kProxy, |
| 11626 AUTH_ASYNC, | 11815 AUTH_ASYNC, |
| 11627 OK, | 11816 OK, |
| 11628 kServer, | 11817 kServer, |
| 11629 AUTH_ASYNC, | 11818 AUTH_ASYNC, |
| 11630 OK, | 11819 OK, |
| 11631 3, | 11820 3, |
| 11632 kNoSSL, | 11821 kNoSSL, |
| 11633 {TestRound(kGetProxy, kProxyChallenge, OK), | 11822 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11634 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11823 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11635 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11824 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11636 {kProxy, | 11825 {kProxy, |
| 11637 AUTH_ASYNC, | 11826 AUTH_ASYNC, |
| 11638 OK, | 11827 OK, |
| 11639 kServer, | 11828 kServer, |
| 11640 AUTH_ASYNC, | 11829 AUTH_ASYNC, |
| 11641 ERR_INVALID_AUTH_CREDENTIALS, | 11830 ERR_INVALID_AUTH_CREDENTIALS, |
| 11642 3, | 11831 3, |
| 11643 kNoSSL, | 11832 kNoSSL, |
| 11644 {TestRound(kGetProxy, kProxyChallenge, OK), | 11833 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11645 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11834 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11646 TestRound(kGetAuthWithProxyAuth, kFailure, | 11835 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11647 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11648 // Non-authenticating HTTPS server with a direct connection. | 11836 // Non-authenticating HTTPS server with a direct connection. |
| 11649 {NULL, | 11837 {NULL, |
| 11650 AUTH_NONE, | 11838 AUTH_NONE, |
| 11651 OK, | 11839 OK, |
| 11652 kSecureServer, | 11840 kSecureServer, |
| 11653 AUTH_NONE, | 11841 AUTH_NONE, |
| 11654 OK, | 11842 OK, |
| 11655 1, | 11843 1, |
| 11656 0, | 11844 0, |
| 11657 {TestRound(kGet, kSuccess, OK)}}, | 11845 {TestRound(kGet, kSuccess, OK)}}, |
| 11658 // Authenticating HTTPS server with a direct connection. | 11846 // Authenticating HTTPS server with a direct connection. |
| 11659 {NULL, | 11847 {NULL, |
| 11660 AUTH_NONE, | 11848 AUTH_NONE, |
| 11661 OK, | 11849 OK, |
| 11662 kSecureServer, | 11850 kSecureServer, |
| 11663 AUTH_SYNC, | 11851 AUTH_SYNC, |
| 11664 OK, | 11852 OK, |
| 11665 2, | 11853 2, |
| 11666 0, | 11854 0, |
| 11667 {TestRound(kGet, kServerChallenge, OK), | 11855 {TestRound(kGet, kServerChallenge, OK), |
| 11668 TestRound(kGetAuth, kSuccess, OK)}}, | 11856 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11669 {NULL, | 11857 {NULL, |
| 11670 AUTH_NONE, | 11858 AUTH_NONE, |
| 11671 OK, | 11859 OK, |
| 11672 kSecureServer, | 11860 kSecureServer, |
| 11673 AUTH_SYNC, | 11861 AUTH_SYNC, |
| 11674 ERR_INVALID_AUTH_CREDENTIALS, | 11862 ERR_INVALID_AUTH_CREDENTIALS, |
| 11675 2, | 11863 2, |
| 11676 0, | 11864 0, |
| 11677 {TestRound(kGet, kServerChallenge, OK), | 11865 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11678 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11679 {NULL, | 11866 {NULL, |
| 11680 AUTH_NONE, | 11867 AUTH_NONE, |
| 11681 OK, | 11868 OK, |
| 11682 kSecureServer, | 11869 kSecureServer, |
| 11683 AUTH_ASYNC, | 11870 AUTH_ASYNC, |
| 11684 OK, | 11871 OK, |
| 11685 2, | 11872 2, |
| 11686 0, | 11873 0, |
| 11687 {TestRound(kGet, kServerChallenge, OK), | 11874 {TestRound(kGet, kServerChallenge, OK), |
| 11688 TestRound(kGetAuth, kSuccess, OK)}}, | 11875 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11689 {NULL, | 11876 {NULL, |
| 11690 AUTH_NONE, | 11877 AUTH_NONE, |
| 11691 OK, | 11878 OK, |
| 11692 kSecureServer, | 11879 kSecureServer, |
| 11693 AUTH_ASYNC, | 11880 AUTH_ASYNC, |
| 11694 ERR_INVALID_AUTH_CREDENTIALS, | 11881 ERR_INVALID_AUTH_CREDENTIALS, |
| 11695 2, | 11882 2, |
| 11696 0, | 11883 0, |
| 11697 {TestRound(kGet, kServerChallenge, OK), | 11884 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11698 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11699 // Non-authenticating HTTPS server with a non-authenticating proxy. | 11885 // Non-authenticating HTTPS server with a non-authenticating proxy. |
| 11700 {kProxy, | 11886 {kProxy, |
| 11701 AUTH_NONE, | 11887 AUTH_NONE, |
| 11702 OK, | 11888 OK, |
| 11703 kSecureServer, | 11889 kSecureServer, |
| 11704 AUTH_NONE, | 11890 AUTH_NONE, |
| 11705 OK, | 11891 OK, |
| 11706 1, | 11892 1, |
| 11707 0, | 11893 0, |
| 11708 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, | 11894 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 11719 TestRound(kGetAuth, kSuccess, OK)}}, | 11905 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11720 {kProxy, | 11906 {kProxy, |
| 11721 AUTH_NONE, | 11907 AUTH_NONE, |
| 11722 OK, | 11908 OK, |
| 11723 kSecureServer, | 11909 kSecureServer, |
| 11724 AUTH_SYNC, | 11910 AUTH_SYNC, |
| 11725 ERR_INVALID_AUTH_CREDENTIALS, | 11911 ERR_INVALID_AUTH_CREDENTIALS, |
| 11726 2, | 11912 2, |
| 11727 0, | 11913 0, |
| 11728 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), | 11914 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), |
| 11729 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11915 TestRound(kGet, kSuccess, OK)}}, |
| 11730 {kProxy, | 11916 {kProxy, |
| 11731 AUTH_NONE, | 11917 AUTH_NONE, |
| 11732 OK, | 11918 OK, |
| 11733 kSecureServer, | 11919 kSecureServer, |
| 11734 AUTH_ASYNC, | 11920 AUTH_ASYNC, |
| 11735 OK, | 11921 OK, |
| 11736 2, | 11922 2, |
| 11737 0, | 11923 0, |
| 11738 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), | 11924 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), |
| 11739 TestRound(kGetAuth, kSuccess, OK)}}, | 11925 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11740 {kProxy, | 11926 {kProxy, |
| 11741 AUTH_NONE, | 11927 AUTH_NONE, |
| 11742 OK, | 11928 OK, |
| 11743 kSecureServer, | 11929 kSecureServer, |
| 11744 AUTH_ASYNC, | 11930 AUTH_ASYNC, |
| 11745 ERR_INVALID_AUTH_CREDENTIALS, | 11931 ERR_INVALID_AUTH_CREDENTIALS, |
| 11746 2, | 11932 2, |
| 11747 0, | 11933 0, |
| 11748 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), | 11934 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), |
| 11749 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11935 TestRound(kGet, kSuccess, OK)}}, |
| 11750 // Non-Authenticating HTTPS server through an authenticating proxy. | 11936 // Non-Authenticating HTTPS server through an authenticating proxy. |
| 11751 {kProxy, | 11937 {kProxy, |
| 11752 AUTH_SYNC, | 11938 AUTH_SYNC, |
| 11753 OK, | 11939 OK, |
| 11754 kSecureServer, | 11940 kSecureServer, |
| 11755 AUTH_NONE, | 11941 AUTH_NONE, |
| 11756 OK, | 11942 OK, |
| 11757 2, | 11943 2, |
| 11758 1, | 11944 1, |
| 11759 {TestRound(kConnect, kProxyChallenge, OK), | 11945 {TestRound(kConnect, kProxyChallenge, OK), |
| 11760 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, | 11946 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11761 {kProxy, | 11947 {kProxy, |
| 11762 AUTH_SYNC, | 11948 AUTH_SYNC, |
| 11763 ERR_INVALID_AUTH_CREDENTIALS, | 11949 ERR_INVALID_AUTH_CREDENTIALS, |
| 11764 kSecureServer, | 11950 kSecureServer, |
| 11765 AUTH_NONE, | 11951 AUTH_NONE, |
| 11766 OK, | 11952 OK, |
| 11767 2, | 11953 2, |
| 11768 kNoSSL, | 11954 kNoSSL, |
| 11769 {TestRound(kConnect, kProxyChallenge, OK), | 11955 {TestRound(kConnect, kProxyChallenge, OK), |
| 11770 TestRound(kConnectProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11956 TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11957 {kProxy, |
| 11958 AUTH_SYNC, |
| 11959 ERR_UNSUPPORTED_AUTH_SCHEME, |
| 11960 kSecureServer, |
| 11961 AUTH_NONE, |
| 11962 OK, |
| 11963 2, |
| 11964 kNoSSL, |
| 11965 {TestRound(kConnect, kProxyChallenge, OK), |
| 11966 TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11967 {kProxy, |
| 11968 AUTH_SYNC, |
| 11969 ERR_UNEXPECTED, |
| 11970 kSecureServer, |
| 11971 AUTH_NONE, |
| 11972 OK, |
| 11973 2, |
| 11974 kNoSSL, |
| 11975 {TestRound(kConnect, kProxyChallenge, OK), |
| 11976 TestRound(kConnect, kProxyConnected, ERR_UNEXPECTED)}}, |
| 11771 {kProxy, | 11977 {kProxy, |
| 11772 AUTH_ASYNC, | 11978 AUTH_ASYNC, |
| 11773 OK, | 11979 OK, |
| 11774 kSecureServer, | 11980 kSecureServer, |
| 11775 AUTH_NONE, | 11981 AUTH_NONE, |
| 11776 OK, | 11982 OK, |
| 11777 2, | 11983 2, |
| 11778 1, | 11984 1, |
| 11779 {TestRound(kConnect, kProxyChallenge, OK), | 11985 {TestRound(kConnect, kProxyChallenge, OK), |
| 11780 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, | 11986 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11781 {kProxy, | 11987 {kProxy, |
| 11782 AUTH_ASYNC, | 11988 AUTH_ASYNC, |
| 11783 ERR_INVALID_AUTH_CREDENTIALS, | 11989 ERR_INVALID_AUTH_CREDENTIALS, |
| 11784 kSecureServer, | 11990 kSecureServer, |
| 11785 AUTH_NONE, | 11991 AUTH_NONE, |
| 11786 OK, | 11992 OK, |
| 11787 2, | 11993 2, |
| 11788 kNoSSL, | 11994 kNoSSL, |
| 11789 {TestRound(kConnect, kProxyChallenge, OK), | 11995 {TestRound(kConnect, kProxyChallenge, OK), |
| 11790 TestRound(kConnectProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11996 TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11791 // Authenticating HTTPS server through an authenticating proxy. | 11997 // Authenticating HTTPS server through an authenticating proxy. |
| 11792 {kProxy, | 11998 {kProxy, |
| 11793 AUTH_SYNC, | 11999 AUTH_SYNC, |
| 11794 OK, | 12000 OK, |
| 11795 kSecureServer, | 12001 kSecureServer, |
| 11796 AUTH_SYNC, | 12002 AUTH_SYNC, |
| 11797 OK, | 12003 OK, |
| 11798 3, | 12004 3, |
| 11799 1, | 12005 1, |
| 11800 {TestRound(kConnect, kProxyChallenge, OK), | 12006 {TestRound(kConnect, kProxyChallenge, OK), |
| 11801 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12007 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11802 &kServerChallenge), | 12008 &kServerChallenge), |
| 11803 TestRound(kGetAuth, kSuccess, OK)}}, | 12009 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11804 {kProxy, | 12010 {kProxy, |
| 11805 AUTH_SYNC, | 12011 AUTH_SYNC, |
| 11806 OK, | 12012 OK, |
| 11807 kSecureServer, | 12013 kSecureServer, |
| 11808 AUTH_SYNC, | 12014 AUTH_SYNC, |
| 11809 ERR_INVALID_AUTH_CREDENTIALS, | 12015 ERR_INVALID_AUTH_CREDENTIALS, |
| 11810 3, | 12016 3, |
| 11811 1, | 12017 1, |
| 11812 {TestRound(kConnect, kProxyChallenge, OK), | 12018 {TestRound(kConnect, kProxyChallenge, OK), |
| 11813 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12019 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11814 &kServerChallenge), | 12020 &kServerChallenge), |
| 11815 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 12021 TestRound(kGet, kSuccess, OK)}}, |
| 11816 {kProxy, | 12022 {kProxy, |
| 11817 AUTH_ASYNC, | 12023 AUTH_ASYNC, |
| 11818 OK, | 12024 OK, |
| 11819 kSecureServer, | 12025 kSecureServer, |
| 11820 AUTH_SYNC, | 12026 AUTH_SYNC, |
| 11821 OK, | 12027 OK, |
| 11822 3, | 12028 3, |
| 11823 1, | 12029 1, |
| 11824 {TestRound(kConnect, kProxyChallenge, OK), | 12030 {TestRound(kConnect, kProxyChallenge, OK), |
| 11825 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12031 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11826 &kServerChallenge), | 12032 &kServerChallenge), |
| 11827 TestRound(kGetAuth, kSuccess, OK)}}, | 12033 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11828 {kProxy, | 12034 {kProxy, |
| 11829 AUTH_ASYNC, | 12035 AUTH_ASYNC, |
| 11830 OK, | 12036 OK, |
| 11831 kSecureServer, | 12037 kSecureServer, |
| 11832 AUTH_SYNC, | 12038 AUTH_SYNC, |
| 11833 ERR_INVALID_AUTH_CREDENTIALS, | 12039 ERR_INVALID_AUTH_CREDENTIALS, |
| 11834 3, | 12040 3, |
| 11835 1, | 12041 1, |
| 11836 {TestRound(kConnect, kProxyChallenge, OK), | 12042 {TestRound(kConnect, kProxyChallenge, OK), |
| 11837 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12043 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11838 &kServerChallenge), | 12044 &kServerChallenge), |
| 11839 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 12045 TestRound(kGet, kSuccess, OK)}}, |
| 11840 {kProxy, | 12046 {kProxy, |
| 11841 AUTH_SYNC, | 12047 AUTH_SYNC, |
| 11842 OK, | 12048 OK, |
| 11843 kSecureServer, | 12049 kSecureServer, |
| 11844 AUTH_ASYNC, | 12050 AUTH_ASYNC, |
| 11845 OK, | 12051 OK, |
| 11846 3, | 12052 3, |
| 11847 1, | 12053 1, |
| 11848 {TestRound(kConnect, kProxyChallenge, OK), | 12054 {TestRound(kConnect, kProxyChallenge, OK), |
| 11849 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12055 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11850 &kServerChallenge), | 12056 &kServerChallenge), |
| 11851 TestRound(kGetAuth, kSuccess, OK)}}, | 12057 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11852 {kProxy, | 12058 {kProxy, |
| 11853 AUTH_SYNC, | 12059 AUTH_SYNC, |
| 11854 OK, | 12060 OK, |
| 11855 kSecureServer, | 12061 kSecureServer, |
| 11856 AUTH_ASYNC, | 12062 AUTH_ASYNC, |
| 11857 ERR_INVALID_AUTH_CREDENTIALS, | 12063 ERR_INVALID_AUTH_CREDENTIALS, |
| 11858 3, | 12064 3, |
| 11859 1, | 12065 1, |
| 11860 {TestRound(kConnect, kProxyChallenge, OK), | 12066 {TestRound(kConnect, kProxyChallenge, OK), |
| 11861 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12067 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11862 &kServerChallenge), | 12068 &kServerChallenge), |
| 11863 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 12069 TestRound(kGet, kSuccess, OK)}}, |
| 11864 {kProxy, | 12070 {kProxy, |
| 11865 AUTH_ASYNC, | 12071 AUTH_ASYNC, |
| 11866 OK, | 12072 OK, |
| 11867 kSecureServer, | 12073 kSecureServer, |
| 11868 AUTH_ASYNC, | 12074 AUTH_ASYNC, |
| 11869 OK, | 12075 OK, |
| 11870 3, | 12076 3, |
| 11871 1, | 12077 1, |
| 11872 {TestRound(kConnect, kProxyChallenge, OK), | 12078 {TestRound(kConnect, kProxyChallenge, OK), |
| 11873 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12079 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11874 &kServerChallenge), | 12080 &kServerChallenge), |
| 11875 TestRound(kGetAuth, kSuccess, OK)}}, | 12081 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11876 {kProxy, | 12082 {kProxy, |
| 11877 AUTH_ASYNC, | 12083 AUTH_ASYNC, |
| 11878 OK, | 12084 OK, |
| 11879 kSecureServer, | 12085 kSecureServer, |
| 11880 AUTH_ASYNC, | 12086 AUTH_ASYNC, |
| 11881 ERR_INVALID_AUTH_CREDENTIALS, | 12087 ERR_INVALID_AUTH_CREDENTIALS, |
| 11882 3, | 12088 3, |
| 11883 1, | 12089 1, |
| 11884 {TestRound(kConnect, kProxyChallenge, OK), | 12090 {TestRound(kConnect, kProxyChallenge, OK), |
| 11885 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12091 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11886 &kServerChallenge), | 12092 &kServerChallenge), |
| 11887 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 12093 TestRound(kGet, kSuccess, OK)}}, |
| 11888 }; | 12094 }; |
| 11889 | 12095 |
| 11890 for (size_t i = 0; i < arraysize(test_configs); ++i) { | 12096 for (size_t i = 0; i < arraysize(test_configs); ++i) { |
| 12097 SCOPED_TRACE(::testing::Message() << "Test config " << i); |
| 11891 HttpAuthHandlerMock::Factory* auth_factory( | 12098 HttpAuthHandlerMock::Factory* auth_factory( |
| 11892 new HttpAuthHandlerMock::Factory()); | 12099 new HttpAuthHandlerMock::Factory()); |
| 11893 session_deps_.http_auth_handler_factory.reset(auth_factory); | 12100 session_deps_.http_auth_handler_factory.reset(auth_factory); |
| 11894 SSLInfo empty_ssl_info; | 12101 SSLInfo empty_ssl_info; |
| 11895 const TestConfig& test_config = test_configs[i]; | 12102 const TestConfig& test_config = test_configs[i]; |
| 11896 | 12103 |
| 11897 // Set up authentication handlers as necessary. | 12104 // Set up authentication handlers as necessary. |
| 11898 if (test_config.proxy_auth_timing != AUTH_NONE) { | 12105 if (test_config.proxy_auth_timing != AUTH_NONE) { |
| 11899 for (int n = 0; n < 2; n++) { | 12106 for (int n = 0; n < 2; n++) { |
| 11900 HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock()); | 12107 HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock()); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 11917 GURL origin(test_config.server_url); | 12124 GURL origin(test_config.server_url); |
| 11918 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(), | 12125 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(), |
| 11919 auth_challenge.end()); | 12126 auth_challenge.end()); |
| 11920 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, | 12127 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, |
| 11921 empty_ssl_info, origin, | 12128 empty_ssl_info, origin, |
| 11922 NetLogWithSource()); | 12129 NetLogWithSource()); |
| 11923 auth_handler->SetGenerateExpectation( | 12130 auth_handler->SetGenerateExpectation( |
| 11924 test_config.server_auth_timing == AUTH_ASYNC, | 12131 test_config.server_auth_timing == AUTH_ASYNC, |
| 11925 test_config.server_auth_rv); | 12132 test_config.server_auth_rv); |
| 11926 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER); | 12133 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER); |
| 12134 |
| 12135 // The second handler always succeeds. It should only be used where there |
| 12136 // are multiple auth sessions for server auth in the same network |
| 12137 // transaction using the same auth scheme. |
| 12138 std::unique_ptr<HttpAuthHandlerMock> second_handler = |
| 12139 base::MakeUnique<HttpAuthHandlerMock>(); |
| 12140 second_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, |
| 12141 empty_ssl_info, origin, |
| 12142 NetLogWithSource()); |
| 12143 second_handler->SetGenerateExpectation(true, OK); |
| 12144 auth_factory->AddMockHandler(second_handler.release(), |
| 12145 HttpAuth::AUTH_SERVER); |
| 11927 } | 12146 } |
| 11928 if (test_config.proxy_url) { | 12147 if (test_config.proxy_url) { |
| 11929 session_deps_.proxy_service = | 12148 session_deps_.proxy_service = |
| 11930 ProxyService::CreateFixed(test_config.proxy_url); | 12149 ProxyService::CreateFixed(test_config.proxy_url); |
| 11931 } else { | 12150 } else { |
| 11932 session_deps_.proxy_service = ProxyService::CreateDirect(); | 12151 session_deps_.proxy_service = ProxyService::CreateDirect(); |
| 11933 } | 12152 } |
| 11934 | 12153 |
| 11935 HttpRequestInfo request; | 12154 HttpRequestInfo request; |
| 11936 request.method = "GET"; | 12155 request.method = "GET"; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11991 if (round == 0) { | 12210 if (round == 0) { |
| 11992 rv = trans.Start(&request, callback.callback(), NetLogWithSource()); | 12211 rv = trans.Start(&request, callback.callback(), NetLogWithSource()); |
| 11993 } else { | 12212 } else { |
| 11994 rv = trans.RestartWithAuth( | 12213 rv = trans.RestartWithAuth( |
| 11995 AuthCredentials(kFoo, kBar), callback.callback()); | 12214 AuthCredentials(kFoo, kBar), callback.callback()); |
| 11996 } | 12215 } |
| 11997 if (rv == ERR_IO_PENDING) | 12216 if (rv == ERR_IO_PENDING) |
| 11998 rv = callback.WaitForResult(); | 12217 rv = callback.WaitForResult(); |
| 11999 | 12218 |
| 12000 // Compare results with expected data. | 12219 // Compare results with expected data. |
| 12001 EXPECT_EQ(read_write_round.expected_rv, rv); | 12220 EXPECT_THAT(rv, IsError(read_write_round.expected_rv)); |
| 12002 const HttpResponseInfo* response = trans.GetResponseInfo(); | 12221 const HttpResponseInfo* response = trans.GetResponseInfo(); |
| 12003 if (read_write_round.expected_rv != OK) { | 12222 if (read_write_round.expected_rv != OK) { |
| 12004 EXPECT_EQ(round + 1, test_config.num_auth_rounds); | 12223 EXPECT_EQ(round + 1, test_config.num_auth_rounds); |
| 12005 continue; | 12224 continue; |
| 12006 } | 12225 } |
| 12007 if (round + 1 < test_config.num_auth_rounds) { | 12226 if (round + 1 < test_config.num_auth_rounds) { |
| 12008 EXPECT_TRUE(response->auth_challenge); | 12227 EXPECT_TRUE(response->auth_challenge); |
| 12009 } else { | 12228 } else { |
| 12010 EXPECT_FALSE(response->auth_challenge); | 12229 EXPECT_FALSE(response->auth_challenge); |
| 12230 EXPECT_FALSE(trans.IsReadyToRestartForAuth()); |
| 12011 } | 12231 } |
| 12012 } | 12232 } |
| 12013 } | 12233 } |
| 12014 } | 12234 } |
| 12015 | 12235 |
| 12016 TEST_F(HttpNetworkTransactionTest, MultiRoundAuth) { | 12236 TEST_F(HttpNetworkTransactionTest, MultiRoundAuth) { |
| 12017 // Do multi-round authentication and make sure it works correctly. | 12237 // Do multi-round authentication and make sure it works correctly. |
| 12018 HttpAuthHandlerMock::Factory* auth_factory( | 12238 HttpAuthHandlerMock::Factory* auth_factory( |
| 12019 new HttpAuthHandlerMock::Factory()); | 12239 new HttpAuthHandlerMock::Factory()); |
| 12020 session_deps_.http_auth_handler_factory.reset(auth_factory); | 12240 session_deps_.http_auth_handler_factory.reset(auth_factory); |
| (...skipping 3861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15882 base::RunLoop().RunUntilIdle(); | 16102 base::RunLoop().RunUntilIdle(); |
| 15883 | 16103 |
| 15884 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16104 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| 15885 HttpRequestHeaders headers; | 16105 HttpRequestHeaders headers; |
| 15886 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 16106 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
| 15887 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 16107 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
| 15888 } | 16108 } |
| 15889 #endif // !defined(OS_IOS) | 16109 #endif // !defined(OS_IOS) |
| 15890 | 16110 |
| 15891 } // namespace net | 16111 } // namespace net |
| OLD | NEW |