Index: net/ftp/ftp_network_transaction_unittest.cc |
diff --git a/net/ftp/ftp_network_transaction_unittest.cc b/net/ftp/ftp_network_transaction_unittest.cc |
index d381b0b25690e9a9a55354947e1797f5dbbff1ef..51cf77b9e407ce2c0be79ab018434bb0f2401144 100644 |
--- a/net/ftp/ftp_network_transaction_unittest.cc |
+++ b/net/ftp/ftp_network_transaction_unittest.cc |
@@ -235,15 +235,16 @@ class FtpNetworkTransactionTest : public PlatformTest { |
return info; |
} |
- void TransactionFailHelper(FtpMockControlSocket* ctrl_socket, |
- const char* request, |
- FtpMockControlSocket::State state, |
- FtpMockControlSocket::State next_state, |
- const char* response, |
- int expected_result) { |
- ctrl_socket->InjectFailure(state, next_state, response); |
- StaticMockSocket data_socket1; |
- StaticMockSocket data_socket2; |
+ void ExecuteTransaction(FtpMockControlSocket* ctrl_socket, |
+ const char* request, |
+ int expected_result) { |
+ std::string mock_data("mock-data"); |
+ MockRead data_reads[] = { |
+ MockRead(mock_data.c_str()), |
+ }; |
+ // TODO(phajdan.jr): FTP transaction should not open two data sockets. |
+ StaticMockSocket data_socket1(data_reads, NULL); |
+ StaticMockSocket data_socket2(data_reads, NULL); |
mock_socket_factory_.AddMockSocket(ctrl_socket); |
mock_socket_factory_.AddMockSocket(&data_socket1); |
mock_socket_factory_.AddMockSocket(&data_socket2); |
@@ -251,6 +252,25 @@ class FtpNetworkTransactionTest : public PlatformTest { |
ASSERT_EQ(ERR_IO_PENDING, transaction_.Start(&request_info, &callback_)); |
EXPECT_EQ(expected_result, callback_.WaitForResult()); |
EXPECT_EQ(FtpMockControlSocket::QUIT, ctrl_socket->state()); |
+ if (expected_result == OK) { |
+ scoped_refptr<IOBuffer> io_buffer(new IOBuffer(kBufferSize)); |
+ memset(io_buffer->data(), 0, kBufferSize); |
+ ASSERT_EQ(ERR_IO_PENDING, |
+ transaction_.Read(io_buffer.get(), kBufferSize, &callback_)); |
+ EXPECT_EQ(static_cast<int>(mock_data.length()), |
+ callback_.WaitForResult()); |
+ EXPECT_EQ(mock_data, std::string(io_buffer->data(), mock_data.length())); |
+ } |
+ } |
+ |
+ void TransactionFailHelper(FtpMockControlSocket* ctrl_socket, |
+ const char* request, |
+ FtpMockControlSocket::State state, |
+ FtpMockControlSocket::State next_state, |
+ const char* response, |
+ int expected_result) { |
+ ctrl_socket->InjectFailure(state, next_state, response); |
+ ExecuteTransaction(ctrl_socket, request, expected_result); |
} |
scoped_refptr<FtpNetworkSession> session_; |
@@ -270,47 +290,36 @@ TEST_F(FtpNetworkTransactionTest, FailedLookup) { |
TEST_F(FtpNetworkTransactionTest, DirectoryTransaction) { |
FtpMockControlSocketDirectoryListing ctrl_socket; |
- std::string test_string("mock-directory-listing"); |
- MockRead data_reads[] = { |
- MockRead(test_string.c_str()), |
- }; |
- // TODO(phajdan.jr): FTP transaction should not open two data sockets. |
- StaticMockSocket data_socket1; |
- StaticMockSocket data_socket2(data_reads, NULL); |
- mock_socket_factory_.AddMockSocket(&ctrl_socket); |
- mock_socket_factory_.AddMockSocket(&data_socket1); |
- mock_socket_factory_.AddMockSocket(&data_socket2); |
- FtpRequestInfo request_info = GetRequestInfo("ftp://host"); |
- ASSERT_EQ(ERR_IO_PENDING, transaction_.Start(&request_info, &callback_)); |
- EXPECT_EQ(OK, callback_.WaitForResult()); |
- EXPECT_EQ(FtpMockControlSocket::QUIT, ctrl_socket.state()); |
- scoped_refptr<IOBuffer> io_buffer(new IOBuffer(kBufferSize)); |
- memset(io_buffer->data(), 0, kBufferSize); |
- EXPECT_EQ(ERR_IO_PENDING, |
- transaction_.Read(io_buffer.get(), kBufferSize, &callback_)); |
- EXPECT_EQ(static_cast<int>(test_string.length()), callback_.WaitForResult()); |
- EXPECT_EQ(test_string, std::string(io_buffer->data(), test_string.length())); |
+ ExecuteTransaction(&ctrl_socket, "ftp://host", OK); |
+} |
+ |
+TEST_F(FtpNetworkTransactionTest, DirectoryTransactionShortReads2) { |
+ FtpMockControlSocketDirectoryListing ctrl_socket; |
+ ctrl_socket.set_short_read_limit(2); |
+ ExecuteTransaction(&ctrl_socket, "ftp://host", OK); |
+} |
+ |
+TEST_F(FtpNetworkTransactionTest, DirectoryTransactionShortReads5) { |
+ FtpMockControlSocketDirectoryListing ctrl_socket; |
+ ctrl_socket.set_short_read_limit(5); |
+ ExecuteTransaction(&ctrl_socket, "ftp://host", OK); |
} |
TEST_F(FtpNetworkTransactionTest, DownloadTransaction) { |
FtpMockControlSocketFileDownload ctrl_socket; |
- std::string test_string("mock-file-contents"); |
- MockRead data_reads[] = { |
- MockRead(test_string.c_str()), |
- }; |
- StaticMockSocket data_socket(data_reads, NULL); |
- mock_socket_factory_.AddMockSocket(&ctrl_socket); |
- mock_socket_factory_.AddMockSocket(&data_socket); |
- FtpRequestInfo request_info = GetRequestInfo("ftp://host/file"); |
- ASSERT_EQ(ERR_IO_PENDING, transaction_.Start(&request_info, &callback_)); |
- EXPECT_EQ(OK, callback_.WaitForResult()); |
- EXPECT_EQ(FtpMockControlSocket::QUIT, ctrl_socket.state()); |
- scoped_refptr<IOBuffer> io_buffer(new IOBuffer(kBufferSize)); |
- memset(io_buffer->data(), 0, kBufferSize); |
- EXPECT_EQ(ERR_IO_PENDING, |
- transaction_.Read(io_buffer.get(), kBufferSize, &callback_)); |
- EXPECT_EQ(static_cast<int>(test_string.length()), callback_.WaitForResult()); |
- EXPECT_EQ(test_string, std::string(io_buffer->data(), test_string.length())); |
+ ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); |
+} |
+ |
+TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads2) { |
+ FtpMockControlSocketFileDownload ctrl_socket; |
+ ctrl_socket.set_short_read_limit(2); |
+ ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); |
+} |
+ |
+TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads5) { |
+ FtpMockControlSocketFileDownload ctrl_socket; |
+ ctrl_socket.set_short_read_limit(5); |
+ ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); |
} |
TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailUser) { |