Chromium Code Reviews| Index: net/http/http_network_transaction_unittest.cc |
| diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc |
| index 6ff5d0bfd42baeb2715fedca94773aded2aac577..8973ba0ff2ab3bfd7de210cbbd81fa51ef7f28f9 100644 |
| --- a/net/http/http_network_transaction_unittest.cc |
| +++ b/net/http/http_network_transaction_unittest.cc |
| @@ -327,7 +327,7 @@ class HttpNetworkTransactionTest |
| std::string GetAlternativeServiceHttpHeader() { |
| return std::string("Alt-Svc: ") + GetAlternateProtocolFromParam() + |
| - "=\"www.example.com:443\"\r\n"; |
| + "=\"www.example.org:444\"\r\n"; |
|
Ryan Hamilton
2016/05/28 23:28:45
Are the changes from com:443 -> org:444 required b
Bence
2016/05/30 01:09:22
You are right, they are not required for most test
|
| } |
| // Either |write_failure| specifies a write failure or |read_failure| |
| @@ -9705,8 +9705,53 @@ TEST_P(HttpNetworkTransactionTest, HonorAlternativeServiceHeader) { |
| ASSERT_EQ(1u, alternative_service_vector.size()); |
| EXPECT_EQ(AlternateProtocolFromNextProto(GetProtocol()), |
| alternative_service_vector[0].protocol); |
| - EXPECT_EQ("www.example.com", alternative_service_vector[0].host); |
| - EXPECT_EQ(443, alternative_service_vector[0].port); |
| + EXPECT_EQ("www.example.org", alternative_service_vector[0].host); |
| + EXPECT_EQ(444, alternative_service_vector[0].port); |
| +} |
| + |
| +// HTTP/2 Alternative Services should be disabled if alternative service |
| +// hostname is different from that of origin. |
| +// TODO(bnc): Remove when https://crbug.com/615413 is fixed. |
| +TEST_P(HttpNetworkTransactionTest, |
| + DisableHTTP2AlternativeServicesWithDifferentHost) { |
| + session_deps_.enable_alternative_service_with_different_host = true; |
| + |
| + HttpRequestInfo request; |
| + request.method = "GET"; |
| + request.url = GURL("http://www.example.org/"); |
| + request.load_flags = 0; |
| + |
| + MockConnect mock_connect(ASYNC, ERR_CONNECTION_REFUSED); |
| + StaticSocketDataProvider first_data; |
| + first_data.set_connect_data(mock_connect); |
| + session_deps_.socket_factory->AddSocketDataProvider(&first_data); |
| + |
| + MockRead data_reads[] = { |
| + MockRead("HTTP/1.1 200 OK\r\n\r\n"), MockRead("hello world"), |
| + MockRead(ASYNC, OK), |
| + }; |
| + StaticSocketDataProvider second_data(data_reads, arraysize(data_reads), NULL, |
| + 0); |
| + session_deps_.socket_factory->AddSocketDataProvider(&second_data); |
| + |
| + std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| + |
| + base::WeakPtr<HttpServerProperties> http_server_properties = |
| + session->http_server_properties(); |
| + AlternativeService alternative_service( |
| + AlternateProtocolFromNextProto(GetProtocol()), "different.example.org", |
| + 444); |
| + base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); |
| + http_server_properties->SetAlternativeService( |
| + url::SchemeHostPort(request.url), alternative_service, expiration); |
| + |
| + std::unique_ptr<HttpTransaction> trans( |
| + new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| + TestCompletionCallback callback; |
| + |
| + int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| + // Alternative service is not used, request fails. |
| + EXPECT_EQ(ERR_CONNECTION_REFUSED, callback.GetResult(rv)); |
| } |
| TEST_P(HttpNetworkTransactionTest, ClearAlternativeServices) { |
| @@ -10600,7 +10645,7 @@ TEST_P(HttpNetworkTransactionTest, StallAlternativeServiceForNpnSpdy) { |
| HttpRequestInfo request; |
| request.method = "GET"; |
| - request.url = GURL("http://www.example.com/"); |
| + request.url = GURL("http://www.example.org/"); |
| request.load_flags = 0; |
| std::string alternative_service_http_header = |
| @@ -10769,8 +10814,8 @@ TEST_P(HttpNetworkTransactionTest, UseAlternativeServiceForTunneledNpnSpdy) { |
| spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| MockWrite spdy_writes[] = { |
| MockWrite(ASYNC, 0, |
| - "CONNECT www.example.com:443 HTTP/1.1\r\n" |
| - "Host: www.example.com:443\r\n" |
| + "CONNECT www.example.org:444 HTTP/1.1\r\n" |
| + "Host: www.example.org:444\r\n" |
| "Proxy-Connection: keep-alive\r\n\r\n"), |
| CreateMockWrite(*req, 2), |
| }; |
| @@ -10837,7 +10882,7 @@ TEST_P(HttpNetworkTransactionTest, UseAlternativeServiceForTunneledNpnSpdy) { |
| ASSERT_EQ(3u, capturing_proxy_resolver.resolved().size()); |
| EXPECT_EQ("http://www.example.org/", |
| capturing_proxy_resolver.resolved()[0].spec()); |
| - EXPECT_EQ("https://www.example.org/", |
| + EXPECT_EQ("https://www.example.org:444/", |
| capturing_proxy_resolver.resolved()[1].spec()); |
| LoadTimingInfo load_timing_info; |
| @@ -10913,7 +10958,7 @@ TEST_P(HttpNetworkTransactionTest, |
| EXPECT_EQ("hello world", response_data); |
| // Set up an initial SpdySession in the pool to reuse. |
| - HostPortPair host_port_pair("www.example.com", 443); |
| + HostPortPair host_port_pair("www.example.org", 444); |
| SpdySessionKey key(host_port_pair, ProxyServer::Direct(), |
| PRIVACY_MODE_DISABLED); |
| base::WeakPtr<SpdySession> spdy_session = |
| @@ -13159,17 +13204,18 @@ TEST_P(AltSvcCertificateVerificationTest, NewConnectionValid) { |
| Run(false, true); |
| } |
| -TEST_P(AltSvcCertificateVerificationTest, NewConnectionInvalid) { |
| +// TODO(bnc): Re-enable when https://crbug.com/615413 is fixed. |
| +TEST_P(AltSvcCertificateVerificationTest, DISABLED_NewConnectionInvalid) { |
| Run(false, false); |
| } |
| // Alternative service requires HTTP/2 (or SPDY), but HTTP/1.1 is negotiated |
| // with the alternative server. That connection should not be used. |
| TEST_P(HttpNetworkTransactionTest, AlternativeServiceNotOnHttp11) { |
| - url::SchemeHostPort server("https", "origin.example.org", 443); |
| - HostPortPair alternative("alternative.example.org", 443); |
| + url::SchemeHostPort server("https", "www.example.org", 443); |
| + HostPortPair alternative("www.example.org", 444); |
| - // Negotiate HTTP/1.1 with alternative.example.org. |
| + // Negotiate HTTP/1.1 with alternative. |
| SSLSocketDataProvider ssl(ASYNC, OK); |
| ssl.SetNextProto(kProtoHTTP11); |
| session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); |
| @@ -13201,7 +13247,7 @@ TEST_P(HttpNetworkTransactionTest, AlternativeServiceNotOnHttp11) { |
| new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| HttpRequestInfo request; |
| request.method = "GET"; |
| - request.url = GURL("https://origin.example.org:443"); |
| + request.url = GURL("https://www.example.org:443"); |
| request.load_flags = 0; |
| TestCompletionCallback callback; |
| @@ -13216,8 +13262,8 @@ TEST_P(HttpNetworkTransactionTest, AlternativeServiceNotOnHttp11) { |
| // succeeds, the request should succeed, even if the latter fails because |
| // HTTP/1.1 is negotiated which is insufficient for alternative service. |
| TEST_P(HttpNetworkTransactionTest, FailedAlternativeServiceIsNotUserVisible) { |
| - url::SchemeHostPort server("https", "origin.example.org", 443); |
| - HostPortPair alternative("alternative.example.org", 443); |
| + url::SchemeHostPort server("https", "www.example.org", 443); |
| + HostPortPair alternative("www.example.org", 444); |
| // Negotiate HTTP/1.1 with alternative. |
| SSLSocketDataProvider alternative_ssl(ASYNC, OK); |
| @@ -13235,14 +13281,12 @@ TEST_P(HttpNetworkTransactionTest, FailedAlternativeServiceIsNotUserVisible) { |
| session_deps_.socket_factory->AddSSLSocketDataProvider(&origin_ssl); |
| MockWrite http_writes[] = { |
| - MockWrite( |
| - "GET / HTTP/1.1\r\n" |
| - "Host: origin.example.org\r\n" |
| - "Connection: keep-alive\r\n\r\n"), |
| - MockWrite( |
| - "GET /second HTTP/1.1\r\n" |
| - "Host: origin.example.org\r\n" |
| - "Connection: keep-alive\r\n\r\n"), |
| + MockWrite("GET / HTTP/1.1\r\n" |
| + "Host: www.example.org\r\n" |
| + "Connection: keep-alive\r\n\r\n"), |
| + MockWrite("GET /second HTTP/1.1\r\n" |
| + "Host: www.example.org\r\n" |
| + "Connection: keep-alive\r\n\r\n"), |
| }; |
| MockRead http_reads[] = { |
| @@ -13273,7 +13317,7 @@ TEST_P(HttpNetworkTransactionTest, FailedAlternativeServiceIsNotUserVisible) { |
| HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); |
| HttpRequestInfo request1; |
| request1.method = "GET"; |
| - request1.url = GURL("https://origin.example.org:443"); |
| + request1.url = GURL("https://www.example.org:443"); |
| request1.load_flags = 0; |
| TestCompletionCallback callback1; |
| @@ -13301,7 +13345,7 @@ TEST_P(HttpNetworkTransactionTest, FailedAlternativeServiceIsNotUserVisible) { |
| HttpNetworkTransaction trans2(DEFAULT_PRIORITY, session.get()); |
| HttpRequestInfo request2; |
| request2.method = "GET"; |
| - request2.url = GURL("https://origin.example.org:443/second"); |
| + request2.url = GURL("https://www.example.org:443/second"); |
| request2.load_flags = 0; |
| TestCompletionCallback callback2; |