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 e7a6a3b70e2c4a8143f8964634ae982a4713f6dd..cf1ce7e9a2cf1744101e0c0f833fb3554d949230 100644 |
--- a/net/http/http_network_transaction_unittest.cc |
+++ b/net/http/http_network_transaction_unittest.cc |
@@ -1218,34 +1218,41 @@ TEST_P(HttpNetworkTransactionTest, Ignores1xx) { |
} |
TEST_P(HttpNetworkTransactionTest, Incomplete100ThenEOF) { |
- HttpRequestInfo request; |
- request.method = "POST"; |
- request.url = GURL("http://www.foo.com/"); |
- request.load_flags = 0; |
+ struct TestCase { |
+ const char* response; |
+ net::Error expected_error_code; |
+ }; |
+ const TestCase kTestCases[] = { |
+ {"HTTP/1.0 100 Continue\r\n", net::ERR_RESPONSE_HEADERS_TRUNCATED}, |
+ {"HTTP/1.0 100 Continue\r\n\r\n", net::ERR_EMPTY_RESPONSE}, |
+ }; |
- scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
- scoped_ptr<HttpTransaction> trans( |
- new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
+ for (const TestCase& test_case : kTestCases) { |
+ SCOPED_TRACE(test_case.response); |
- MockRead data_reads[] = { |
- MockRead(SYNCHRONOUS, "HTTP/1.0 100 Continue\r\n"), |
- MockRead(ASYNC, 0), |
- }; |
- StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
- session_deps_.socket_factory->AddSocketDataProvider(&data); |
+ HttpRequestInfo request; |
+ request.method = "POST"; |
+ request.url = GURL("http://www.foo.com/"); |
+ request.load_flags = 0; |
- TestCompletionCallback callback; |
+ scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
+ scoped_ptr<HttpTransaction> trans( |
+ new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
- int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
- EXPECT_EQ(ERR_IO_PENDING, rv); |
+ MockRead data_reads[] = { |
+ MockRead(SYNCHRONOUS, test_case.response), MockRead(ASYNC, 0), |
+ }; |
+ StaticSocketDataProvider data(data_reads, arraysize(data_reads), NULL, 0); |
+ session_deps_.socket_factory->AddSocketDataProvider(&data); |
- rv = callback.WaitForResult(); |
- EXPECT_EQ(OK, rv); |
+ TestCompletionCallback callback; |
- std::string response_data; |
- rv = ReadTransaction(trans.get(), &response_data); |
- EXPECT_EQ(OK, rv); |
- EXPECT_EQ("", response_data); |
+ int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ |
+ rv = callback.WaitForResult(); |
+ EXPECT_EQ(test_case.expected_error_code, rv); |
+ } |
} |
TEST_P(HttpNetworkTransactionTest, EmptyResponse) { |
@@ -6122,8 +6129,7 @@ TEST_P(HttpNetworkTransactionTest, DigestPreAuthNonceCount) { |
// Sever accepts the authorization. |
MockRead data_reads2[] = { |
- MockRead("HTTP/1.0 200 OK\r\n"), |
- MockRead(SYNCHRONOUS, OK), |
+ MockRead("HTTP/1.0 200 OK\r\n\r\n"), MockRead(SYNCHRONOUS, OK), |
}; |
StaticSocketDataProvider data1(data_reads1, arraysize(data_reads1), |
@@ -8225,8 +8231,8 @@ TEST_P(HttpNetworkTransactionTest, RequestWriteError) { |
EXPECT_EQ(ERR_CONNECTION_RESET, rv); |
} |
-// Check that a connection closed after the start of the headers finishes ok. |
-TEST_P(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { |
+// Integration test for when truncated headers are received. |
+TEST_P(HttpNetworkTransactionTest, TruncatedHeaders) { |
HttpRequestInfo request; |
request.method = "GET"; |
request.url = GURL("http://www.foo.com/"); |
@@ -8250,18 +8256,7 @@ TEST_P(HttpNetworkTransactionTest, ConnectionClosedAfterStartOfHeaders) { |
EXPECT_EQ(ERR_IO_PENDING, rv); |
rv = callback.WaitForResult(); |
- EXPECT_EQ(OK, rv); |
- |
- const HttpResponseInfo* response = trans->GetResponseInfo(); |
- ASSERT_TRUE(response != NULL); |
- |
- EXPECT_TRUE(response->headers.get() != NULL); |
- EXPECT_EQ("HTTP/1.0 200 OK", response->headers->GetStatusLine()); |
- |
- std::string response_data; |
- rv = ReadTransaction(trans.get(), &response_data); |
- EXPECT_EQ(OK, rv); |
- EXPECT_EQ("", response_data); |
+ EXPECT_EQ(ERR_RESPONSE_HEADERS_TRUNCATED, rv); |
} |
// Make sure that a dropped connection while draining the body for auth |