| 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 4049 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4060 ASSERT_TRUE(response); | 4060 ASSERT_TRUE(response); |
| 4061 ASSERT_TRUE(response->headers); | 4061 ASSERT_TRUE(response->headers); |
| 4062 EXPECT_EQ(407, response->headers->response_code()); | 4062 EXPECT_EQ(407, response->headers->response_code()); |
| 4063 EXPECT_FALSE(trans->IsReadyToRestartForAuth()); | 4063 EXPECT_FALSE(trans->IsReadyToRestartForAuth()); |
| 4064 EXPECT_TRUE(response->auth_challenge); | 4064 EXPECT_TRUE(response->auth_challenge); |
| 4065 | 4065 |
| 4066 trans.reset(); | 4066 trans.reset(); |
| 4067 session->CloseAllConnections(); | 4067 session->CloseAllConnections(); |
| 4068 } | 4068 } |
| 4069 | 4069 |
| 4070 // A more nuanced test than GenerateAuthToken test which asserts that |
| 4071 // ERR_INVALID_AUTH_CREDENTIALS does not cause the auth scheme to be |
| 4072 // unnecessarily invalidated, and that if the server co-operates, the |
| 4073 // authentication handshake can continue with the same scheme but with a |
| 4074 // different identity. |
| 4075 TEST_F(HttpNetworkTransactionTest, NonPermanentGenerateAuthTokenError) { |
| 4076 HttpRequestInfo request; |
| 4077 request.method = "GET"; |
| 4078 request.url = GURL("http://www.example.org/"); |
| 4079 |
| 4080 std::unique_ptr<HttpAuthHandlerMock::Factory> auth_handler_factory( |
| 4081 new HttpAuthHandlerMock::Factory()); |
| 4082 auth_handler_factory->set_do_init_from_challenge(true); |
| 4083 |
| 4084 // First handler. Uses default credentials, but barfs at generate auth token. |
| 4085 std::unique_ptr<HttpAuthHandlerMock> mock_handler(new HttpAuthHandlerMock()); |
| 4086 mock_handler->set_allows_default_credentials(true); |
| 4087 mock_handler->set_allows_explicit_credentials(true); |
| 4088 mock_handler->set_connection_based(true); |
| 4089 mock_handler->SetGenerateExpectation(true, ERR_INVALID_AUTH_CREDENTIALS); |
| 4090 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4091 HttpAuth::AUTH_SERVER); |
| 4092 |
| 4093 // Add another handler for the second challenge. It supports default |
| 4094 // credentials, but they shouldn't be used, since they were already tried. |
| 4095 mock_handler.reset(new HttpAuthHandlerMock()); |
| 4096 mock_handler->set_allows_default_credentials(true); |
| 4097 mock_handler->set_allows_explicit_credentials(true); |
| 4098 mock_handler->set_connection_based(true); |
| 4099 auth_handler_factory->AddMockHandler(mock_handler.release(), |
| 4100 HttpAuth::AUTH_SERVER); |
| 4101 session_deps_.http_auth_handler_factory = std::move(auth_handler_factory); |
| 4102 |
| 4103 std::unique_ptr<HttpNetworkSession> session = CreateSession(&session_deps_); |
| 4104 |
| 4105 MockWrite data_writes1[] = { |
| 4106 MockWrite("GET / HTTP/1.1\r\n" |
| 4107 "Host: www.example.org\r\n" |
| 4108 "Connection: keep-alive\r\n\r\n"), |
| 4109 }; |
| 4110 |
| 4111 MockRead data_reads1[] = { |
| 4112 MockRead("HTTP/1.1 401 Authentication Required\r\n" |
| 4113 "WWW-Authenticate: Mock\r\n" |
| 4114 "Connection: keep-alive\r\n\r\n"), |
| 4115 }; |
| 4116 |
| 4117 // Identical to data_writes1[]. The AuthHandler encounters a |
| 4118 // ERR_INVALID_AUTH_CREDENTIALS during the GenerateAuthToken stage, so the |
| 4119 // transaction procceds without an authorization header. |
| 4120 MockWrite data_writes2[] = { |
| 4121 MockWrite("GET / HTTP/1.1\r\n" |
| 4122 "Host: www.example.org\r\n" |
| 4123 "Connection: keep-alive\r\n\r\n"), |
| 4124 }; |
| 4125 |
| 4126 MockRead data_reads2[] = { |
| 4127 MockRead("HTTP/1.1 401 Authentication Required\r\n" |
| 4128 "WWW-Authenticate: Mock\r\n" |
| 4129 "Connection: keep-alive\r\n\r\n"), |
| 4130 }; |
| 4131 |
| 4132 MockWrite data_writes3[] = { |
| 4133 MockWrite("GET / HTTP/1.1\r\n" |
| 4134 "Host: www.example.org\r\n" |
| 4135 "Connection: keep-alive\r\n" |
| 4136 "Authorization: auth_token\r\n\r\n"), |
| 4137 }; |
| 4138 |
| 4139 MockRead data_reads3[] = { |
| 4140 MockRead("HTTP/1.1 200 OK\r\n" |
| 4141 "Content-Length: 5\r\n" |
| 4142 "Content-Type: text/plain\r\n" |
| 4143 "Connection: keep-alive\r\n\r\n" |
| 4144 "Hello"), |
| 4145 }; |
| 4146 |
| 4147 StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
| 4148 data_writes1, arraysize(data_writes1)); |
| 4149 session_deps_.socket_factory->AddSocketDataProvider(&data1); |
| 4150 |
| 4151 StaticSocketDataProvider data2(data_reads2, arraysize(data_reads2), |
| 4152 data_writes2, arraysize(data_writes2)); |
| 4153 session_deps_.socket_factory->AddSocketDataProvider(&data2); |
| 4154 |
| 4155 StaticSocketDataProvider data3(data_reads3, arraysize(data_reads3), |
| 4156 data_writes3, arraysize(data_writes3)); |
| 4157 session_deps_.socket_factory->AddSocketDataProvider(&data3); |
| 4158 |
| 4159 std::unique_ptr<HttpNetworkTransaction> trans( |
| 4160 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| 4161 |
| 4162 TestCompletionCallback callback; |
| 4163 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); |
| 4164 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4165 |
| 4166 const HttpResponseInfo* response = trans->GetResponseInfo(); |
| 4167 ASSERT_TRUE(response); |
| 4168 ASSERT_TRUE(response->headers); |
| 4169 EXPECT_TRUE(HttpVersion(1, 1) == response->headers->GetHttpVersion()); |
| 4170 |
| 4171 // The following three tests assert that an authentication challenge was |
| 4172 // received and that the stack is ready to respond to the challenge using |
| 4173 // ambient credentials. |
| 4174 EXPECT_EQ(401, response->headers->response_code()); |
| 4175 EXPECT_TRUE(trans->IsReadyToRestartForAuth()); |
| 4176 EXPECT_FALSE(response->auth_challenge); |
| 4177 |
| 4178 rv = trans->RestartWithAuth(AuthCredentials(), callback.callback()); |
| 4179 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4180 response = trans->GetResponseInfo(); |
| 4181 ASSERT_TRUE(response); |
| 4182 ASSERT_TRUE(response->headers); |
| 4183 |
| 4184 // The following three tests assert that an authentication challenge was |
| 4185 // received and that the stack needs explicit credentials before it is ready |
| 4186 // to respond to the challenge. |
| 4187 EXPECT_EQ(401, response->headers->response_code()); |
| 4188 EXPECT_FALSE(trans->IsReadyToRestartForAuth()); |
| 4189 EXPECT_TRUE(response->auth_challenge); |
| 4190 |
| 4191 rv = trans->RestartWithAuth(AuthCredentials(), callback.callback()); |
| 4192 EXPECT_THAT(callback.GetResult(rv), IsOk()); |
| 4193 response = trans->GetResponseInfo(); |
| 4194 ASSERT_TRUE(response); |
| 4195 ASSERT_TRUE(response->headers); |
| 4196 EXPECT_EQ(200, response->headers->response_code()); |
| 4197 |
| 4198 trans.reset(); |
| 4199 session->CloseAllConnections(); |
| 4200 } |
| 4201 |
| 4070 // Test the load timing for HTTPS requests with an HTTP proxy. | 4202 // Test the load timing for HTTPS requests with an HTTP proxy. |
| 4071 TEST_F(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { | 4203 TEST_F(HttpNetworkTransactionTest, HttpProxyLoadTimingNoPacTwoRequests) { |
| 4072 HttpRequestInfo request1; | 4204 HttpRequestInfo request1; |
| 4073 request1.method = "GET"; | 4205 request1.method = "GET"; |
| 4074 request1.url = GURL("https://www.example.org/1"); | 4206 request1.url = GURL("https://www.example.org/1"); |
| 4075 | 4207 |
| 4076 HttpRequestInfo request2; | 4208 HttpRequestInfo request2; |
| 4077 request2.method = "GET"; | 4209 request2.method = "GET"; |
| 4078 request2.url = GURL("https://www.example.org/2"); | 4210 request2.url = GURL("https://www.example.org/2"); |
| 4079 | 4211 |
| (...skipping 7260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11340 | 11472 |
| 11341 struct TestConfig { | 11473 struct TestConfig { |
| 11342 const char* const proxy_url; | 11474 const char* const proxy_url; |
| 11343 AuthTiming proxy_auth_timing; | 11475 AuthTiming proxy_auth_timing; |
| 11344 int proxy_auth_rv; | 11476 int proxy_auth_rv; |
| 11345 const char* const server_url; | 11477 const char* const server_url; |
| 11346 AuthTiming server_auth_timing; | 11478 AuthTiming server_auth_timing; |
| 11347 int server_auth_rv; | 11479 int server_auth_rv; |
| 11348 int num_auth_rounds; | 11480 int num_auth_rounds; |
| 11349 int first_ssl_round; | 11481 int first_ssl_round; |
| 11350 TestRound rounds[3]; | 11482 TestRound rounds[4]; |
| 11351 } test_configs[] = { | 11483 } test_configs[] = { |
| 11352 // Non-authenticating HTTP server with a direct connection. | 11484 // Non-authenticating HTTP server with a direct connection. |
| 11353 {NULL, | 11485 {NULL, |
| 11354 AUTH_NONE, | 11486 AUTH_NONE, |
| 11355 OK, | 11487 OK, |
| 11356 kServer, | 11488 kServer, |
| 11357 AUTH_NONE, | 11489 AUTH_NONE, |
| 11358 OK, | 11490 OK, |
| 11359 1, | 11491 1, |
| 11360 kNoSSL, | 11492 kNoSSL, |
| 11361 {TestRound(kGet, kSuccess, OK)}}, | 11493 {TestRound(kGet, kSuccess, OK)}}, |
| 11362 // Authenticating HTTP server with a direct connection. | 11494 // Authenticating HTTP server with a direct connection. |
| 11363 {NULL, | 11495 {NULL, |
| 11364 AUTH_NONE, | 11496 AUTH_NONE, |
| 11365 OK, | 11497 OK, |
| 11366 kServer, | 11498 kServer, |
| 11367 AUTH_SYNC, | 11499 AUTH_SYNC, |
| 11368 OK, | 11500 OK, |
| 11369 2, | 11501 2, |
| 11370 kNoSSL, | 11502 kNoSSL, |
| 11371 {TestRound(kGet, kServerChallenge, OK), | 11503 {TestRound(kGet, kServerChallenge, OK), |
| 11372 TestRound(kGetAuth, kSuccess, OK)}}, | 11504 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11373 {NULL, | 11505 {NULL, |
| 11374 AUTH_NONE, | 11506 AUTH_NONE, |
| 11375 OK, | 11507 OK, |
| 11376 kServer, | 11508 kServer, |
| 11377 AUTH_SYNC, | 11509 AUTH_SYNC, |
| 11378 ERR_INVALID_AUTH_CREDENTIALS, | 11510 ERR_INVALID_AUTH_CREDENTIALS, |
| 11511 3, |
| 11512 kNoSSL, |
| 11513 {TestRound(kGet, kServerChallenge, OK), |
| 11514 TestRound(kGet, kServerChallenge, OK), |
| 11515 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11516 {NULL, |
| 11517 AUTH_NONE, |
| 11518 OK, |
| 11519 kServer, |
| 11520 AUTH_SYNC, |
| 11521 ERR_UNSUPPORTED_AUTH_SCHEME, |
| 11522 2, |
| 11523 kNoSSL, |
| 11524 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11525 {NULL, |
| 11526 AUTH_NONE, |
| 11527 OK, |
| 11528 kServer, |
| 11529 AUTH_SYNC, |
| 11530 ERR_UNDOCUMENTED_SECURITY_LIBRARY_STATUS, |
| 11531 2, |
| 11532 kNoSSL, |
| 11533 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11534 {kProxy, |
| 11535 AUTH_SYNC, |
| 11536 ERR_FAILED, |
| 11537 kServer, |
| 11538 AUTH_NONE, |
| 11539 OK, |
| 11540 2, |
| 11541 kNoSSL, |
| 11542 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11543 TestRound(kGetProxy, kFailure, ERR_FAILED)}}, |
| 11544 {kProxy, |
| 11545 AUTH_ASYNC, |
| 11546 ERR_FAILED, |
| 11547 kServer, |
| 11548 AUTH_NONE, |
| 11549 OK, |
| 11550 2, |
| 11551 kNoSSL, |
| 11552 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11553 TestRound(kGetProxy, kFailure, ERR_FAILED)}}, |
| 11554 {NULL, |
| 11555 AUTH_NONE, |
| 11556 OK, |
| 11557 kServer, |
| 11558 AUTH_SYNC, |
| 11559 ERR_FAILED, |
| 11379 2, | 11560 2, |
| 11380 kNoSSL, | 11561 kNoSSL, |
| 11381 {TestRound(kGet, kServerChallenge, OK), | 11562 {TestRound(kGet, kServerChallenge, OK), |
| 11382 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11563 TestRound(kGet, kFailure, ERR_FAILED)}}, |
| 11383 {NULL, | 11564 {NULL, |
| 11384 AUTH_NONE, | 11565 AUTH_NONE, |
| 11385 OK, | 11566 OK, |
| 11567 kServer, |
| 11568 AUTH_ASYNC, |
| 11569 ERR_FAILED, |
| 11570 2, |
| 11571 kNoSSL, |
| 11572 {TestRound(kGet, kServerChallenge, OK), |
| 11573 TestRound(kGet, kFailure, ERR_FAILED)}}, |
| 11574 {NULL, |
| 11575 AUTH_NONE, |
| 11576 OK, |
| 11386 kServer, | 11577 kServer, |
| 11387 AUTH_ASYNC, | 11578 AUTH_ASYNC, |
| 11388 OK, | 11579 OK, |
| 11389 2, | 11580 2, |
| 11390 kNoSSL, | 11581 kNoSSL, |
| 11391 {TestRound(kGet, kServerChallenge, OK), | 11582 {TestRound(kGet, kServerChallenge, OK), |
| 11392 TestRound(kGetAuth, kSuccess, OK)}}, | 11583 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11393 {NULL, | 11584 {NULL, |
| 11394 AUTH_NONE, | 11585 AUTH_NONE, |
| 11395 OK, | 11586 OK, |
| 11396 kServer, | 11587 kServer, |
| 11397 AUTH_ASYNC, | 11588 AUTH_ASYNC, |
| 11398 ERR_INVALID_AUTH_CREDENTIALS, | 11589 ERR_INVALID_AUTH_CREDENTIALS, |
| 11399 2, | 11590 3, |
| 11400 kNoSSL, | 11591 kNoSSL, |
| 11401 {TestRound(kGet, kServerChallenge, OK), | 11592 {TestRound(kGet, kServerChallenge, OK), |
| 11402 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11593 // The second round uses a HttpAuthHandlerMock that always succeeds. |
| 11594 TestRound(kGet, kServerChallenge, OK), |
| 11595 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11403 // Non-authenticating HTTP server through a non-authenticating proxy. | 11596 // Non-authenticating HTTP server through a non-authenticating proxy. |
| 11404 {kProxy, | 11597 {kProxy, |
| 11405 AUTH_NONE, | 11598 AUTH_NONE, |
| 11406 OK, | 11599 OK, |
| 11407 kServer, | 11600 kServer, |
| 11408 AUTH_NONE, | 11601 AUTH_NONE, |
| 11409 OK, | 11602 OK, |
| 11410 1, | 11603 1, |
| 11411 kNoSSL, | 11604 kNoSSL, |
| 11412 {TestRound(kGetProxy, kSuccess, OK)}}, | 11605 {TestRound(kGetProxy, kSuccess, OK)}}, |
| 11413 // Authenticating HTTP server through a non-authenticating proxy. | 11606 // Authenticating HTTP server through a non-authenticating proxy. |
| 11414 {kProxy, | 11607 {kProxy, |
| 11415 AUTH_NONE, | 11608 AUTH_NONE, |
| 11416 OK, | 11609 OK, |
| 11417 kServer, | 11610 kServer, |
| 11418 AUTH_SYNC, | 11611 AUTH_SYNC, |
| 11419 OK, | 11612 OK, |
| 11420 2, | 11613 2, |
| 11421 kNoSSL, | 11614 kNoSSL, |
| 11422 {TestRound(kGetProxy, kServerChallenge, OK), | 11615 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11423 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, | 11616 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, |
| 11424 {kProxy, | 11617 {kProxy, |
| 11425 AUTH_NONE, | 11618 AUTH_NONE, |
| 11426 OK, | 11619 OK, |
| 11427 kServer, | 11620 kServer, |
| 11428 AUTH_SYNC, | 11621 AUTH_SYNC, |
| 11429 ERR_INVALID_AUTH_CREDENTIALS, | 11622 ERR_INVALID_AUTH_CREDENTIALS, |
| 11430 2, | 11623 3, |
| 11431 kNoSSL, | 11624 kNoSSL, |
| 11432 {TestRound(kGetProxy, kServerChallenge, OK), | 11625 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11433 TestRound(kGetAuthThroughProxy, kFailure, | 11626 TestRound(kGetProxy, kServerChallenge, OK), |
| 11434 ERR_INVALID_AUTH_CREDENTIALS)}}, | 11627 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, |
| 11435 {kProxy, | 11628 {kProxy, |
| 11436 AUTH_NONE, | 11629 AUTH_NONE, |
| 11437 OK, | 11630 OK, |
| 11438 kServer, | 11631 kServer, |
| 11439 AUTH_ASYNC, | 11632 AUTH_ASYNC, |
| 11440 OK, | 11633 OK, |
| 11441 2, | 11634 2, |
| 11442 kNoSSL, | 11635 kNoSSL, |
| 11443 {TestRound(kGetProxy, kServerChallenge, OK), | 11636 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11444 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, | 11637 TestRound(kGetAuthThroughProxy, kSuccess, OK)}}, |
| 11445 {kProxy, | 11638 {kProxy, |
| 11446 AUTH_NONE, | 11639 AUTH_NONE, |
| 11447 OK, | 11640 OK, |
| 11448 kServer, | 11641 kServer, |
| 11449 AUTH_ASYNC, | 11642 AUTH_ASYNC, |
| 11450 ERR_INVALID_AUTH_CREDENTIALS, | 11643 ERR_INVALID_AUTH_CREDENTIALS, |
| 11451 2, | 11644 2, |
| 11452 kNoSSL, | 11645 kNoSSL, |
| 11453 {TestRound(kGetProxy, kServerChallenge, OK), | 11646 {TestRound(kGetProxy, kServerChallenge, OK), |
| 11454 TestRound(kGetAuthThroughProxy, kFailure, | 11647 TestRound(kGetProxy, kSuccess, OK)}}, |
| 11455 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11456 // Non-authenticating HTTP server through an authenticating proxy. | 11648 // Non-authenticating HTTP server through an authenticating proxy. |
| 11457 {kProxy, | 11649 {kProxy, |
| 11458 AUTH_SYNC, | 11650 AUTH_SYNC, |
| 11459 OK, | 11651 OK, |
| 11460 kServer, | 11652 kServer, |
| 11461 AUTH_NONE, | 11653 AUTH_NONE, |
| 11462 OK, | 11654 OK, |
| 11463 2, | 11655 2, |
| 11464 kNoSSL, | 11656 kNoSSL, |
| 11465 {TestRound(kGetProxy, kProxyChallenge, OK), | 11657 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11466 TestRound(kGetProxyAuth, kSuccess, OK)}}, | 11658 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11467 {kProxy, | 11659 {kProxy, |
| 11468 AUTH_SYNC, | 11660 AUTH_SYNC, |
| 11469 ERR_INVALID_AUTH_CREDENTIALS, | 11661 ERR_INVALID_AUTH_CREDENTIALS, |
| 11470 kServer, | 11662 kServer, |
| 11471 AUTH_NONE, | 11663 AUTH_NONE, |
| 11472 OK, | 11664 OK, |
| 11473 2, | 11665 2, |
| 11474 kNoSSL, | 11666 kNoSSL, |
| 11475 {TestRound(kGetProxy, kProxyChallenge, OK), | 11667 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11476 TestRound(kGetProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11668 TestRound(kGetProxy, kSuccess, OK)}}, |
| 11477 {kProxy, | 11669 {kProxy, |
| 11478 AUTH_ASYNC, | 11670 AUTH_ASYNC, |
| 11479 OK, | 11671 OK, |
| 11480 kServer, | 11672 kServer, |
| 11481 AUTH_NONE, | 11673 AUTH_NONE, |
| 11482 OK, | 11674 OK, |
| 11483 2, | 11675 2, |
| 11484 kNoSSL, | 11676 kNoSSL, |
| 11485 {TestRound(kGetProxy, kProxyChallenge, OK), | 11677 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11486 TestRound(kGetProxyAuth, kSuccess, OK)}}, | 11678 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11487 {kProxy, | 11679 {kProxy, |
| 11488 AUTH_ASYNC, | 11680 AUTH_ASYNC, |
| 11489 ERR_INVALID_AUTH_CREDENTIALS, | 11681 ERR_INVALID_AUTH_CREDENTIALS, |
| 11490 kServer, | 11682 kServer, |
| 11491 AUTH_NONE, | 11683 AUTH_NONE, |
| 11492 OK, | 11684 OK, |
| 11493 2, | 11685 2, |
| 11494 kNoSSL, | 11686 kNoSSL, |
| 11495 {TestRound(kGetProxy, kProxyChallenge, OK), | 11687 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11496 TestRound(kGetProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11688 TestRound(kGetProxy, kSuccess, OK)}}, |
| 11497 // Authenticating HTTP server through an authenticating proxy. | 11689 // Authenticating HTTP server through an authenticating proxy. |
| 11498 {kProxy, | 11690 {kProxy, |
| 11499 AUTH_SYNC, | 11691 AUTH_SYNC, |
| 11500 OK, | 11692 OK, |
| 11501 kServer, | 11693 kServer, |
| 11502 AUTH_SYNC, | 11694 AUTH_SYNC, |
| 11503 OK, | 11695 OK, |
| 11504 3, | 11696 3, |
| 11505 kNoSSL, | 11697 kNoSSL, |
| 11506 {TestRound(kGetProxy, kProxyChallenge, OK), | 11698 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11507 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11699 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11508 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11700 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11509 {kProxy, | 11701 {kProxy, |
| 11510 AUTH_SYNC, | 11702 AUTH_SYNC, |
| 11511 OK, | 11703 OK, |
| 11512 kServer, | 11704 kServer, |
| 11513 AUTH_SYNC, | 11705 AUTH_SYNC, |
| 11514 ERR_INVALID_AUTH_CREDENTIALS, | 11706 ERR_INVALID_AUTH_CREDENTIALS, |
| 11515 3, | 11707 3, |
| 11516 kNoSSL, | 11708 kNoSSL, |
| 11517 {TestRound(kGetProxy, kProxyChallenge, OK), | 11709 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11518 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11710 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11519 TestRound(kGetAuthWithProxyAuth, kFailure, | 11711 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11520 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11521 {kProxy, | 11712 {kProxy, |
| 11522 AUTH_ASYNC, | 11713 AUTH_ASYNC, |
| 11523 OK, | 11714 OK, |
| 11524 kServer, | 11715 kServer, |
| 11525 AUTH_SYNC, | 11716 AUTH_SYNC, |
| 11526 OK, | 11717 OK, |
| 11527 3, | 11718 3, |
| 11528 kNoSSL, | 11719 kNoSSL, |
| 11529 {TestRound(kGetProxy, kProxyChallenge, OK), | 11720 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11530 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11721 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11531 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11722 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11532 {kProxy, | 11723 {kProxy, |
| 11533 AUTH_ASYNC, | 11724 AUTH_ASYNC, |
| 11534 OK, | 11725 OK, |
| 11535 kServer, | 11726 kServer, |
| 11536 AUTH_SYNC, | 11727 AUTH_SYNC, |
| 11537 ERR_INVALID_AUTH_CREDENTIALS, | 11728 ERR_INVALID_AUTH_CREDENTIALS, |
| 11538 3, | 11729 3, |
| 11539 kNoSSL, | 11730 kNoSSL, |
| 11540 {TestRound(kGetProxy, kProxyChallenge, OK), | 11731 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11541 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11732 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11542 TestRound(kGetAuthWithProxyAuth, kFailure, | 11733 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11543 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11544 {kProxy, | 11734 {kProxy, |
| 11545 AUTH_SYNC, | 11735 AUTH_SYNC, |
| 11546 OK, | 11736 OK, |
| 11547 kServer, | 11737 kServer, |
| 11548 AUTH_ASYNC, | 11738 AUTH_ASYNC, |
| 11549 OK, | 11739 OK, |
| 11550 3, | 11740 3, |
| 11551 kNoSSL, | 11741 kNoSSL, |
| 11552 {TestRound(kGetProxy, kProxyChallenge, OK), | 11742 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11553 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11743 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11554 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11744 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11555 {kProxy, | 11745 {kProxy, |
| 11556 AUTH_SYNC, | 11746 AUTH_SYNC, |
| 11557 OK, | 11747 OK, |
| 11558 kServer, | 11748 kServer, |
| 11559 AUTH_ASYNC, | 11749 AUTH_ASYNC, |
| 11560 ERR_INVALID_AUTH_CREDENTIALS, | 11750 ERR_INVALID_AUTH_CREDENTIALS, |
| 11561 3, | 11751 3, |
| 11562 kNoSSL, | 11752 kNoSSL, |
| 11563 {TestRound(kGetProxy, kProxyChallenge, OK), | 11753 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11564 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11754 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11565 TestRound(kGetAuthWithProxyAuth, kFailure, | 11755 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11566 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11567 {kProxy, | 11756 {kProxy, |
| 11568 AUTH_ASYNC, | 11757 AUTH_ASYNC, |
| 11569 OK, | 11758 OK, |
| 11570 kServer, | 11759 kServer, |
| 11571 AUTH_ASYNC, | 11760 AUTH_ASYNC, |
| 11572 OK, | 11761 OK, |
| 11573 3, | 11762 3, |
| 11574 kNoSSL, | 11763 kNoSSL, |
| 11575 {TestRound(kGetProxy, kProxyChallenge, OK), | 11764 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11576 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11765 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11577 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, | 11766 TestRound(kGetAuthWithProxyAuth, kSuccess, OK)}}, |
| 11578 {kProxy, | 11767 {kProxy, |
| 11579 AUTH_ASYNC, | 11768 AUTH_ASYNC, |
| 11580 OK, | 11769 OK, |
| 11581 kServer, | 11770 kServer, |
| 11582 AUTH_ASYNC, | 11771 AUTH_ASYNC, |
| 11583 ERR_INVALID_AUTH_CREDENTIALS, | 11772 ERR_INVALID_AUTH_CREDENTIALS, |
| 11584 3, | 11773 3, |
| 11585 kNoSSL, | 11774 kNoSSL, |
| 11586 {TestRound(kGetProxy, kProxyChallenge, OK), | 11775 {TestRound(kGetProxy, kProxyChallenge, OK), |
| 11587 TestRound(kGetProxyAuth, kServerChallenge, OK), | 11776 TestRound(kGetProxyAuth, kServerChallenge, OK), |
| 11588 TestRound(kGetAuthWithProxyAuth, kFailure, | 11777 TestRound(kGetProxyAuth, kSuccess, OK)}}, |
| 11589 ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11590 // Non-authenticating HTTPS server with a direct connection. | 11778 // Non-authenticating HTTPS server with a direct connection. |
| 11591 {NULL, | 11779 {NULL, |
| 11592 AUTH_NONE, | 11780 AUTH_NONE, |
| 11593 OK, | 11781 OK, |
| 11594 kSecureServer, | 11782 kSecureServer, |
| 11595 AUTH_NONE, | 11783 AUTH_NONE, |
| 11596 OK, | 11784 OK, |
| 11597 1, | 11785 1, |
| 11598 0, | 11786 0, |
| 11599 {TestRound(kGet, kSuccess, OK)}}, | 11787 {TestRound(kGet, kSuccess, OK)}}, |
| 11600 // Authenticating HTTPS server with a direct connection. | 11788 // Authenticating HTTPS server with a direct connection. |
| 11601 {NULL, | 11789 {NULL, |
| 11602 AUTH_NONE, | 11790 AUTH_NONE, |
| 11603 OK, | 11791 OK, |
| 11604 kSecureServer, | 11792 kSecureServer, |
| 11605 AUTH_SYNC, | 11793 AUTH_SYNC, |
| 11606 OK, | 11794 OK, |
| 11607 2, | 11795 2, |
| 11608 0, | 11796 0, |
| 11609 {TestRound(kGet, kServerChallenge, OK), | 11797 {TestRound(kGet, kServerChallenge, OK), |
| 11610 TestRound(kGetAuth, kSuccess, OK)}}, | 11798 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11611 {NULL, | 11799 {NULL, |
| 11612 AUTH_NONE, | 11800 AUTH_NONE, |
| 11613 OK, | 11801 OK, |
| 11614 kSecureServer, | 11802 kSecureServer, |
| 11615 AUTH_SYNC, | 11803 AUTH_SYNC, |
| 11616 ERR_INVALID_AUTH_CREDENTIALS, | 11804 ERR_INVALID_AUTH_CREDENTIALS, |
| 11617 2, | 11805 2, |
| 11618 0, | 11806 0, |
| 11619 {TestRound(kGet, kServerChallenge, OK), | 11807 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11620 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11621 {NULL, | 11808 {NULL, |
| 11622 AUTH_NONE, | 11809 AUTH_NONE, |
| 11623 OK, | 11810 OK, |
| 11624 kSecureServer, | 11811 kSecureServer, |
| 11625 AUTH_ASYNC, | 11812 AUTH_ASYNC, |
| 11626 OK, | 11813 OK, |
| 11627 2, | 11814 2, |
| 11628 0, | 11815 0, |
| 11629 {TestRound(kGet, kServerChallenge, OK), | 11816 {TestRound(kGet, kServerChallenge, OK), |
| 11630 TestRound(kGetAuth, kSuccess, OK)}}, | 11817 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11631 {NULL, | 11818 {NULL, |
| 11632 AUTH_NONE, | 11819 AUTH_NONE, |
| 11633 OK, | 11820 OK, |
| 11634 kSecureServer, | 11821 kSecureServer, |
| 11635 AUTH_ASYNC, | 11822 AUTH_ASYNC, |
| 11636 ERR_INVALID_AUTH_CREDENTIALS, | 11823 ERR_INVALID_AUTH_CREDENTIALS, |
| 11637 2, | 11824 2, |
| 11638 0, | 11825 0, |
| 11639 {TestRound(kGet, kServerChallenge, OK), | 11826 {TestRound(kGet, kServerChallenge, OK), TestRound(kGet, kSuccess, OK)}}, |
| 11640 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | |
| 11641 // Non-authenticating HTTPS server with a non-authenticating proxy. | 11827 // Non-authenticating HTTPS server with a non-authenticating proxy. |
| 11642 {kProxy, | 11828 {kProxy, |
| 11643 AUTH_NONE, | 11829 AUTH_NONE, |
| 11644 OK, | 11830 OK, |
| 11645 kSecureServer, | 11831 kSecureServer, |
| 11646 AUTH_NONE, | 11832 AUTH_NONE, |
| 11647 OK, | 11833 OK, |
| 11648 1, | 11834 1, |
| 11649 0, | 11835 0, |
| 11650 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, | 11836 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 11661 TestRound(kGetAuth, kSuccess, OK)}}, | 11847 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11662 {kProxy, | 11848 {kProxy, |
| 11663 AUTH_NONE, | 11849 AUTH_NONE, |
| 11664 OK, | 11850 OK, |
| 11665 kSecureServer, | 11851 kSecureServer, |
| 11666 AUTH_SYNC, | 11852 AUTH_SYNC, |
| 11667 ERR_INVALID_AUTH_CREDENTIALS, | 11853 ERR_INVALID_AUTH_CREDENTIALS, |
| 11668 2, | 11854 2, |
| 11669 0, | 11855 0, |
| 11670 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), | 11856 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), |
| 11671 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11857 TestRound(kGet, kSuccess, OK)}}, |
| 11672 {kProxy, | 11858 {kProxy, |
| 11673 AUTH_NONE, | 11859 AUTH_NONE, |
| 11674 OK, | 11860 OK, |
| 11675 kSecureServer, | 11861 kSecureServer, |
| 11676 AUTH_ASYNC, | 11862 AUTH_ASYNC, |
| 11677 OK, | 11863 OK, |
| 11678 2, | 11864 2, |
| 11679 0, | 11865 0, |
| 11680 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), | 11866 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), |
| 11681 TestRound(kGetAuth, kSuccess, OK)}}, | 11867 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11682 {kProxy, | 11868 {kProxy, |
| 11683 AUTH_NONE, | 11869 AUTH_NONE, |
| 11684 OK, | 11870 OK, |
| 11685 kSecureServer, | 11871 kSecureServer, |
| 11686 AUTH_ASYNC, | 11872 AUTH_ASYNC, |
| 11687 ERR_INVALID_AUTH_CREDENTIALS, | 11873 ERR_INVALID_AUTH_CREDENTIALS, |
| 11688 2, | 11874 2, |
| 11689 0, | 11875 0, |
| 11690 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), | 11876 {TestRound(kConnect, kProxyConnected, OK, &kGet, &kServerChallenge), |
| 11691 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11877 TestRound(kGet, kSuccess, OK)}}, |
| 11692 // Non-Authenticating HTTPS server through an authenticating proxy. | 11878 // Non-Authenticating HTTPS server through an authenticating proxy. |
| 11693 {kProxy, | 11879 {kProxy, |
| 11694 AUTH_SYNC, | 11880 AUTH_SYNC, |
| 11695 OK, | 11881 OK, |
| 11696 kSecureServer, | 11882 kSecureServer, |
| 11697 AUTH_NONE, | 11883 AUTH_NONE, |
| 11698 OK, | 11884 OK, |
| 11699 2, | 11885 2, |
| 11700 1, | 11886 1, |
| 11701 {TestRound(kConnect, kProxyChallenge, OK), | 11887 {TestRound(kConnect, kProxyChallenge, OK), |
| 11702 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, | 11888 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11703 {kProxy, | 11889 {kProxy, |
| 11704 AUTH_SYNC, | 11890 AUTH_SYNC, |
| 11705 ERR_INVALID_AUTH_CREDENTIALS, | 11891 ERR_INVALID_AUTH_CREDENTIALS, |
| 11706 kSecureServer, | 11892 kSecureServer, |
| 11707 AUTH_NONE, | 11893 AUTH_NONE, |
| 11708 OK, | 11894 OK, |
| 11709 2, | 11895 2, |
| 11710 kNoSSL, | 11896 kNoSSL, |
| 11711 {TestRound(kConnect, kProxyChallenge, OK), | 11897 {TestRound(kConnect, kProxyChallenge, OK), |
| 11712 TestRound(kConnectProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11898 TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11899 {kProxy, |
| 11900 AUTH_SYNC, |
| 11901 ERR_UNSUPPORTED_AUTH_SCHEME, |
| 11902 kSecureServer, |
| 11903 AUTH_NONE, |
| 11904 OK, |
| 11905 2, |
| 11906 kNoSSL, |
| 11907 {TestRound(kConnect, kProxyChallenge, OK), |
| 11908 TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11909 {kProxy, |
| 11910 AUTH_SYNC, |
| 11911 ERR_UNEXPECTED, |
| 11912 kSecureServer, |
| 11913 AUTH_NONE, |
| 11914 OK, |
| 11915 2, |
| 11916 kNoSSL, |
| 11917 {TestRound(kConnect, kProxyChallenge, OK), |
| 11918 TestRound(kConnect, kProxyConnected, ERR_UNEXPECTED)}}, |
| 11713 {kProxy, | 11919 {kProxy, |
| 11714 AUTH_ASYNC, | 11920 AUTH_ASYNC, |
| 11715 OK, | 11921 OK, |
| 11716 kSecureServer, | 11922 kSecureServer, |
| 11717 AUTH_NONE, | 11923 AUTH_NONE, |
| 11718 OK, | 11924 OK, |
| 11719 2, | 11925 2, |
| 11720 1, | 11926 1, |
| 11721 {TestRound(kConnect, kProxyChallenge, OK), | 11927 {TestRound(kConnect, kProxyChallenge, OK), |
| 11722 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, | 11928 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11723 {kProxy, | 11929 {kProxy, |
| 11724 AUTH_ASYNC, | 11930 AUTH_ASYNC, |
| 11725 ERR_INVALID_AUTH_CREDENTIALS, | 11931 ERR_INVALID_AUTH_CREDENTIALS, |
| 11726 kSecureServer, | 11932 kSecureServer, |
| 11727 AUTH_NONE, | 11933 AUTH_NONE, |
| 11728 OK, | 11934 OK, |
| 11729 2, | 11935 2, |
| 11730 kNoSSL, | 11936 kNoSSL, |
| 11731 {TestRound(kConnect, kProxyChallenge, OK), | 11937 {TestRound(kConnect, kProxyChallenge, OK), |
| 11732 TestRound(kConnectProxyAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11938 TestRound(kConnect, kProxyConnected, OK, &kGet, &kSuccess)}}, |
| 11733 // Authenticating HTTPS server through an authenticating proxy. | 11939 // Authenticating HTTPS server through an authenticating proxy. |
| 11734 {kProxy, | 11940 {kProxy, |
| 11735 AUTH_SYNC, | 11941 AUTH_SYNC, |
| 11736 OK, | 11942 OK, |
| 11737 kSecureServer, | 11943 kSecureServer, |
| 11738 AUTH_SYNC, | 11944 AUTH_SYNC, |
| 11739 OK, | 11945 OK, |
| 11740 3, | 11946 3, |
| 11741 1, | 11947 1, |
| 11742 {TestRound(kConnect, kProxyChallenge, OK), | 11948 {TestRound(kConnect, kProxyChallenge, OK), |
| 11743 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 11949 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11744 &kServerChallenge), | 11950 &kServerChallenge), |
| 11745 TestRound(kGetAuth, kSuccess, OK)}}, | 11951 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11746 {kProxy, | 11952 {kProxy, |
| 11747 AUTH_SYNC, | 11953 AUTH_SYNC, |
| 11748 OK, | 11954 OK, |
| 11749 kSecureServer, | 11955 kSecureServer, |
| 11750 AUTH_SYNC, | 11956 AUTH_SYNC, |
| 11751 ERR_INVALID_AUTH_CREDENTIALS, | 11957 ERR_INVALID_AUTH_CREDENTIALS, |
| 11752 3, | 11958 3, |
| 11753 1, | 11959 1, |
| 11754 {TestRound(kConnect, kProxyChallenge, OK), | 11960 {TestRound(kConnect, kProxyChallenge, OK), |
| 11755 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 11961 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11756 &kServerChallenge), | 11962 &kServerChallenge), |
| 11757 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11963 TestRound(kGet, kSuccess, OK)}}, |
| 11758 {kProxy, | 11964 {kProxy, |
| 11759 AUTH_ASYNC, | 11965 AUTH_ASYNC, |
| 11760 OK, | 11966 OK, |
| 11761 kSecureServer, | 11967 kSecureServer, |
| 11762 AUTH_SYNC, | 11968 AUTH_SYNC, |
| 11763 OK, | 11969 OK, |
| 11764 3, | 11970 3, |
| 11765 1, | 11971 1, |
| 11766 {TestRound(kConnect, kProxyChallenge, OK), | 11972 {TestRound(kConnect, kProxyChallenge, OK), |
| 11767 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 11973 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11768 &kServerChallenge), | 11974 &kServerChallenge), |
| 11769 TestRound(kGetAuth, kSuccess, OK)}}, | 11975 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11770 {kProxy, | 11976 {kProxy, |
| 11771 AUTH_ASYNC, | 11977 AUTH_ASYNC, |
| 11772 OK, | 11978 OK, |
| 11773 kSecureServer, | 11979 kSecureServer, |
| 11774 AUTH_SYNC, | 11980 AUTH_SYNC, |
| 11775 ERR_INVALID_AUTH_CREDENTIALS, | 11981 ERR_INVALID_AUTH_CREDENTIALS, |
| 11776 3, | 11982 3, |
| 11777 1, | 11983 1, |
| 11778 {TestRound(kConnect, kProxyChallenge, OK), | 11984 {TestRound(kConnect, kProxyChallenge, OK), |
| 11779 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 11985 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11780 &kServerChallenge), | 11986 &kServerChallenge), |
| 11781 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 11987 TestRound(kGet, kSuccess, OK)}}, |
| 11782 {kProxy, | 11988 {kProxy, |
| 11783 AUTH_SYNC, | 11989 AUTH_SYNC, |
| 11784 OK, | 11990 OK, |
| 11785 kSecureServer, | 11991 kSecureServer, |
| 11786 AUTH_ASYNC, | 11992 AUTH_ASYNC, |
| 11787 OK, | 11993 OK, |
| 11788 3, | 11994 3, |
| 11789 1, | 11995 1, |
| 11790 {TestRound(kConnect, kProxyChallenge, OK), | 11996 {TestRound(kConnect, kProxyChallenge, OK), |
| 11791 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 11997 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11792 &kServerChallenge), | 11998 &kServerChallenge), |
| 11793 TestRound(kGetAuth, kSuccess, OK)}}, | 11999 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11794 {kProxy, | 12000 {kProxy, |
| 11795 AUTH_SYNC, | 12001 AUTH_SYNC, |
| 11796 OK, | 12002 OK, |
| 11797 kSecureServer, | 12003 kSecureServer, |
| 11798 AUTH_ASYNC, | 12004 AUTH_ASYNC, |
| 11799 ERR_INVALID_AUTH_CREDENTIALS, | 12005 ERR_INVALID_AUTH_CREDENTIALS, |
| 11800 3, | 12006 3, |
| 11801 1, | 12007 1, |
| 11802 {TestRound(kConnect, kProxyChallenge, OK), | 12008 {TestRound(kConnect, kProxyChallenge, OK), |
| 11803 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12009 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11804 &kServerChallenge), | 12010 &kServerChallenge), |
| 11805 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 12011 TestRound(kGet, kSuccess, OK)}}, |
| 11806 {kProxy, | 12012 {kProxy, |
| 11807 AUTH_ASYNC, | 12013 AUTH_ASYNC, |
| 11808 OK, | 12014 OK, |
| 11809 kSecureServer, | 12015 kSecureServer, |
| 11810 AUTH_ASYNC, | 12016 AUTH_ASYNC, |
| 11811 OK, | 12017 OK, |
| 11812 3, | 12018 3, |
| 11813 1, | 12019 1, |
| 11814 {TestRound(kConnect, kProxyChallenge, OK), | 12020 {TestRound(kConnect, kProxyChallenge, OK), |
| 11815 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12021 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11816 &kServerChallenge), | 12022 &kServerChallenge), |
| 11817 TestRound(kGetAuth, kSuccess, OK)}}, | 12023 TestRound(kGetAuth, kSuccess, OK)}}, |
| 11818 {kProxy, | 12024 {kProxy, |
| 11819 AUTH_ASYNC, | 12025 AUTH_ASYNC, |
| 11820 OK, | 12026 OK, |
| 11821 kSecureServer, | 12027 kSecureServer, |
| 11822 AUTH_ASYNC, | 12028 AUTH_ASYNC, |
| 11823 ERR_INVALID_AUTH_CREDENTIALS, | 12029 ERR_INVALID_AUTH_CREDENTIALS, |
| 11824 3, | 12030 3, |
| 11825 1, | 12031 1, |
| 11826 {TestRound(kConnect, kProxyChallenge, OK), | 12032 {TestRound(kConnect, kProxyChallenge, OK), |
| 11827 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, | 12033 TestRound(kConnectProxyAuth, kProxyConnected, OK, &kGet, |
| 11828 &kServerChallenge), | 12034 &kServerChallenge), |
| 11829 TestRound(kGetAuth, kFailure, ERR_INVALID_AUTH_CREDENTIALS)}}, | 12035 TestRound(kGet, kSuccess, OK)}}, |
| 11830 }; | 12036 }; |
| 11831 | 12037 |
| 11832 for (size_t i = 0; i < arraysize(test_configs); ++i) { | 12038 for (size_t i = 0; i < arraysize(test_configs); ++i) { |
| 12039 SCOPED_TRACE(::testing::Message() << "Test config " << i); |
| 11833 HttpAuthHandlerMock::Factory* auth_factory( | 12040 HttpAuthHandlerMock::Factory* auth_factory( |
| 11834 new HttpAuthHandlerMock::Factory()); | 12041 new HttpAuthHandlerMock::Factory()); |
| 11835 session_deps_.http_auth_handler_factory.reset(auth_factory); | 12042 session_deps_.http_auth_handler_factory.reset(auth_factory); |
| 11836 SSLInfo empty_ssl_info; | 12043 SSLInfo empty_ssl_info; |
| 11837 const TestConfig& test_config = test_configs[i]; | 12044 const TestConfig& test_config = test_configs[i]; |
| 11838 | 12045 |
| 11839 // Set up authentication handlers as necessary. | 12046 // Set up authentication handlers as necessary. |
| 11840 if (test_config.proxy_auth_timing != AUTH_NONE) { | 12047 if (test_config.proxy_auth_timing != AUTH_NONE) { |
| 11841 for (int n = 0; n < 2; n++) { | 12048 for (int n = 0; n < 2; n++) { |
| 11842 HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock()); | 12049 HttpAuthHandlerMock* auth_handler(new HttpAuthHandlerMock()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 11857 std::string auth_challenge = "Mock realm=server"; | 12064 std::string auth_challenge = "Mock realm=server"; |
| 11858 GURL origin(test_config.server_url); | 12065 GURL origin(test_config.server_url); |
| 11859 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(), | 12066 HttpAuthChallengeTokenizer tokenizer(auth_challenge.begin(), |
| 11860 auth_challenge.end()); | 12067 auth_challenge.end()); |
| 11861 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, | 12068 auth_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, |
| 11862 empty_ssl_info, origin, BoundNetLog()); | 12069 empty_ssl_info, origin, BoundNetLog()); |
| 11863 auth_handler->SetGenerateExpectation( | 12070 auth_handler->SetGenerateExpectation( |
| 11864 test_config.server_auth_timing == AUTH_ASYNC, | 12071 test_config.server_auth_timing == AUTH_ASYNC, |
| 11865 test_config.server_auth_rv); | 12072 test_config.server_auth_rv); |
| 11866 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER); | 12073 auth_factory->AddMockHandler(auth_handler, HttpAuth::AUTH_SERVER); |
| 12074 |
| 12075 // The second handler always succeeds. It should only be used where there |
| 12076 // are multiple auth sessions for server auth in the same network |
| 12077 // transaction using the same auth scheme. |
| 12078 std::unique_ptr<HttpAuthHandlerMock> second_handler = |
| 12079 base::MakeUnique<HttpAuthHandlerMock>(); |
| 12080 second_handler->InitFromChallenge(&tokenizer, HttpAuth::AUTH_SERVER, |
| 12081 empty_ssl_info, origin, |
| 12082 NetLogWithSource()); |
| 12083 second_handler->SetGenerateExpectation(true, OK); |
| 12084 auth_factory->AddMockHandler(second_handler.release(), |
| 12085 HttpAuth::AUTH_SERVER); |
| 11867 } | 12086 } |
| 11868 if (test_config.proxy_url) { | 12087 if (test_config.proxy_url) { |
| 11869 session_deps_.proxy_service = | 12088 session_deps_.proxy_service = |
| 11870 ProxyService::CreateFixed(test_config.proxy_url); | 12089 ProxyService::CreateFixed(test_config.proxy_url); |
| 11871 } else { | 12090 } else { |
| 11872 session_deps_.proxy_service = ProxyService::CreateDirect(); | 12091 session_deps_.proxy_service = ProxyService::CreateDirect(); |
| 11873 } | 12092 } |
| 11874 | 12093 |
| 11875 HttpRequestInfo request; | 12094 HttpRequestInfo request; |
| 11876 request.method = "GET"; | 12095 request.method = "GET"; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11931 if (round == 0) { | 12150 if (round == 0) { |
| 11932 rv = trans.Start(&request, callback.callback(), BoundNetLog()); | 12151 rv = trans.Start(&request, callback.callback(), BoundNetLog()); |
| 11933 } else { | 12152 } else { |
| 11934 rv = trans.RestartWithAuth( | 12153 rv = trans.RestartWithAuth( |
| 11935 AuthCredentials(kFoo, kBar), callback.callback()); | 12154 AuthCredentials(kFoo, kBar), callback.callback()); |
| 11936 } | 12155 } |
| 11937 if (rv == ERR_IO_PENDING) | 12156 if (rv == ERR_IO_PENDING) |
| 11938 rv = callback.WaitForResult(); | 12157 rv = callback.WaitForResult(); |
| 11939 | 12158 |
| 11940 // Compare results with expected data. | 12159 // Compare results with expected data. |
| 11941 EXPECT_EQ(read_write_round.expected_rv, rv); | 12160 EXPECT_THAT(rv, IsError(read_write_round.expected_rv)); |
| 11942 const HttpResponseInfo* response = trans.GetResponseInfo(); | 12161 const HttpResponseInfo* response = trans.GetResponseInfo(); |
| 11943 if (read_write_round.expected_rv != OK) { | 12162 if (read_write_round.expected_rv != OK) { |
| 11944 EXPECT_EQ(round + 1, test_config.num_auth_rounds); | 12163 EXPECT_EQ(round + 1, test_config.num_auth_rounds); |
| 11945 continue; | 12164 continue; |
| 11946 } | 12165 } |
| 11947 if (round + 1 < test_config.num_auth_rounds) { | 12166 if (round + 1 < test_config.num_auth_rounds) { |
| 11948 EXPECT_TRUE(response->auth_challenge); | 12167 EXPECT_TRUE(response->auth_challenge); |
| 11949 } else { | 12168 } else { |
| 11950 EXPECT_FALSE(response->auth_challenge); | 12169 EXPECT_FALSE(response->auth_challenge); |
| 12170 EXPECT_FALSE(trans.IsReadyToRestartForAuth()); |
| 11951 } | 12171 } |
| 11952 } | 12172 } |
| 11953 } | 12173 } |
| 11954 } | 12174 } |
| 11955 | 12175 |
| 11956 TEST_F(HttpNetworkTransactionTest, MultiRoundAuth) { | 12176 TEST_F(HttpNetworkTransactionTest, MultiRoundAuth) { |
| 11957 // Do multi-round authentication and make sure it works correctly. | 12177 // Do multi-round authentication and make sure it works correctly. |
| 11958 HttpAuthHandlerMock::Factory* auth_factory( | 12178 HttpAuthHandlerMock::Factory* auth_factory( |
| 11959 new HttpAuthHandlerMock::Factory()); | 12179 new HttpAuthHandlerMock::Factory()); |
| 11960 session_deps_.http_auth_handler_factory.reset(auth_factory); | 12180 session_deps_.http_auth_handler_factory.reset(auth_factory); |
| (...skipping 3873 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15834 base::RunLoop().RunUntilIdle(); | 16054 base::RunLoop().RunUntilIdle(); |
| 15835 | 16055 |
| 15836 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); | 16056 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); |
| 15837 HttpRequestHeaders headers; | 16057 HttpRequestHeaders headers; |
| 15838 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); | 16058 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); |
| 15839 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); | 16059 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); |
| 15840 } | 16060 } |
| 15841 #endif // !defined(OS_IOS) | 16061 #endif // !defined(OS_IOS) |
| 15842 | 16062 |
| 15843 } // namespace net | 16063 } // namespace net |
| OLD | NEW |