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 e7a6a3b70e2c4a8143f8964634ae982a4713f6dd..7f3319bc34ed1a24bc5773aa9051d9cafb6462c7 100644 |
| --- a/net/http/http_network_transaction_unittest.cc |
| +++ b/net/http/http_network_transaction_unittest.cc |
| @@ -1218,34 +1218,39 @@ 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) { |
|
davidben
2015/07/31 21:32:50
SCOPED_TRACE(test_case.response)?
mmenke
2015/07/31 21:45:36
Done.
|
| + HttpRequestInfo request; |
| + request.method = "POST"; |
| + request.url = GURL("http://www.foo.com/"); |
| + request.load_flags = 0; |
| - 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); |
| + scoped_refptr<HttpNetworkSession> session(CreateSession(&session_deps_)); |
| + scoped_ptr<HttpTransaction> trans( |
| + new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); |
| - TestCompletionCallback callback; |
| + 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); |
| - int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| - EXPECT_EQ(ERR_IO_PENDING, rv); |
| + TestCompletionCallback callback; |
| - rv = callback.WaitForResult(); |
| - EXPECT_EQ(OK, rv); |
| + int rv = trans->Start(&request, callback.callback(), BoundNetLog()); |
| + EXPECT_EQ(ERR_IO_PENDING, rv); |
| - std::string response_data; |
| - rv = ReadTransaction(trans.get(), &response_data); |
| - EXPECT_EQ(OK, rv); |
| - EXPECT_EQ("", response_data); |
| + rv = callback.WaitForResult(); |
| + EXPECT_EQ(test_case.expected_error_code, rv); |
| + } |
| } |
| TEST_P(HttpNetworkTransactionTest, EmptyResponse) { |
| @@ -6122,8 +6127,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 +8229,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 +8254,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 |