Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: net/ftp/ftp_network_transaction_unittest.cc

Issue 8824006: Migrate net/socket/socket.h, net/socket/stream_socket.h to base::Bind(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/ftp/ftp_network_transaction.cc ('k') | net/ftp/ftp_transaction.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ftp/ftp_network_transaction.h" 5 #include "net/ftp/ftp_network_transaction.h"
6 6
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 8
9 #include "base/compiler_specific.h" 9 #include "base/compiler_specific.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
(...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), 775 MockRead(false, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
776 MockRead(mock_data.c_str()), 776 MockRead(mock_data.c_str()),
777 }; 777 };
778 StaticSocketDataProvider data_socket(data_reads, arraysize(data_reads), 778 StaticSocketDataProvider data_socket(data_reads, arraysize(data_reads),
779 NULL, 0); 779 NULL, 0);
780 mock_socket_factory_.AddSocketDataProvider(ctrl_socket); 780 mock_socket_factory_.AddSocketDataProvider(ctrl_socket);
781 mock_socket_factory_.AddSocketDataProvider(&data_socket); 781 mock_socket_factory_.AddSocketDataProvider(&data_socket);
782 FtpRequestInfo request_info = GetRequestInfo(request); 782 FtpRequestInfo request_info = GetRequestInfo(request);
783 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState()); 783 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState());
784 ASSERT_EQ(ERR_IO_PENDING, 784 ASSERT_EQ(ERR_IO_PENDING,
785 transaction_.Start(&request_info, &callback_, BoundNetLog())); 785 transaction_.Start(&request_info, callback_.callback(),
786 BoundNetLog()));
786 EXPECT_NE(LOAD_STATE_IDLE, transaction_.GetLoadState()); 787 EXPECT_NE(LOAD_STATE_IDLE, transaction_.GetLoadState());
787 ASSERT_EQ(expected_result, callback_.WaitForResult()); 788 ASSERT_EQ(expected_result, callback_.WaitForResult());
788 if (expected_result == OK) { 789 if (expected_result == OK) {
789 scoped_refptr<IOBuffer> io_buffer(new IOBuffer(kBufferSize)); 790 scoped_refptr<IOBuffer> io_buffer(new IOBuffer(kBufferSize));
790 memset(io_buffer->data(), 0, kBufferSize); 791 memset(io_buffer->data(), 0, kBufferSize);
791 ASSERT_EQ(ERR_IO_PENDING, 792 ASSERT_EQ(ERR_IO_PENDING,
792 transaction_.Read(io_buffer.get(), kBufferSize, &callback_)); 793 transaction_.Read(io_buffer.get(), kBufferSize,
794 callback_.callback()));
793 ASSERT_EQ(static_cast<int>(mock_data.length()), 795 ASSERT_EQ(static_cast<int>(mock_data.length()),
794 callback_.WaitForResult()); 796 callback_.WaitForResult());
795 EXPECT_EQ(mock_data, std::string(io_buffer->data(), mock_data.length())); 797 EXPECT_EQ(mock_data, std::string(io_buffer->data(), mock_data.length()));
796 798
797 // Do another Read to detect that the data socket is now closed. 799 // Do another Read to detect that the data socket is now closed.
798 int rv = transaction_.Read(io_buffer.get(), kBufferSize, &callback_); 800 int rv = transaction_.Read(io_buffer.get(), kBufferSize,
801 callback_.callback());
799 if (rv == ERR_IO_PENDING) { 802 if (rv == ERR_IO_PENDING) {
800 EXPECT_EQ(0, callback_.WaitForResult()); 803 EXPECT_EQ(0, callback_.WaitForResult());
801 } else { 804 } else {
802 EXPECT_EQ(0, rv); 805 EXPECT_EQ(0, rv);
803 } 806 }
804 } 807 }
805 EXPECT_EQ(FtpSocketDataProvider::QUIT, ctrl_socket->state()); 808 EXPECT_EQ(FtpSocketDataProvider::QUIT, ctrl_socket->state());
806 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState()); 809 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState());
807 } 810 }
808 811
809 void TransactionFailHelper(FtpSocketDataProvider* ctrl_socket, 812 void TransactionFailHelper(FtpSocketDataProvider* ctrl_socket,
810 const char* request, 813 const char* request,
811 FtpSocketDataProvider::State state, 814 FtpSocketDataProvider::State state,
812 FtpSocketDataProvider::State next_state, 815 FtpSocketDataProvider::State next_state,
813 const char* response, 816 const char* response,
814 int expected_result) { 817 int expected_result) {
815 ctrl_socket->InjectFailure(state, next_state, response); 818 ctrl_socket->InjectFailure(state, next_state, response);
816 ExecuteTransaction(ctrl_socket, request, expected_result); 819 ExecuteTransaction(ctrl_socket, request, expected_result);
817 } 820 }
818 821
819 scoped_ptr<MockHostResolver> host_resolver_; 822 scoped_ptr<MockHostResolver> host_resolver_;
820 scoped_refptr<FtpNetworkSession> session_; 823 scoped_refptr<FtpNetworkSession> session_;
821 MockClientSocketFactory mock_socket_factory_; 824 MockClientSocketFactory mock_socket_factory_;
822 FtpNetworkTransaction transaction_; 825 FtpNetworkTransaction transaction_;
823 TestOldCompletionCallback callback_; 826 TestCompletionCallback callback_;
824 }; 827 };
825 828
826 TEST_F(FtpNetworkTransactionTest, FailedLookup) { 829 TEST_F(FtpNetworkTransactionTest, FailedLookup) {
827 FtpRequestInfo request_info = GetRequestInfo("ftp://badhost"); 830 FtpRequestInfo request_info = GetRequestInfo("ftp://badhost");
828 host_resolver_->rules()->AddSimulatedFailure("badhost"); 831 host_resolver_->rules()->AddSimulatedFailure("badhost");
829 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState()); 832 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState());
830 ASSERT_EQ(ERR_IO_PENDING, 833 ASSERT_EQ(ERR_IO_PENDING,
831 transaction_.Start(&request_info, &callback_, BoundNetLog())); 834 transaction_.Start(&request_info, callback_.callback(),
835 BoundNetLog()));
832 ASSERT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); 836 ASSERT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult());
833 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState()); 837 EXPECT_EQ(LOAD_STATE_IDLE, transaction_.GetLoadState());
834 } 838 }
835 839
836 // Check that when determining the host, the square brackets decorating IPv6 840 // Check that when determining the host, the square brackets decorating IPv6
837 // literals in URLs are stripped. 841 // literals in URLs are stripped.
838 TEST_F(FtpNetworkTransactionTest, StripBracketsFromIPv6Literals) { 842 TEST_F(FtpNetworkTransactionTest, StripBracketsFromIPv6Literals) {
839 host_resolver_->rules()->AddSimulatedFailure("[::1]"); 843 host_resolver_->rules()->AddSimulatedFailure("[::1]");
840 844
841 // We start a transaction that is expected to fail with ERR_INVALID_RESPONSE. 845 // We start a transaction that is expected to fail with ERR_INVALID_RESPONSE.
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 MockRead(mock_data.c_str()), 1048 MockRead(mock_data.c_str()),
1045 }; 1049 };
1046 StaticSocketDataProvider data_socket1(data_reads, arraysize(data_reads), 1050 StaticSocketDataProvider data_socket1(data_reads, arraysize(data_reads),
1047 NULL, 0); 1051 NULL, 0);
1048 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket); 1052 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket);
1049 mock_socket_factory_.AddSocketDataProvider(&data_socket1); 1053 mock_socket_factory_.AddSocketDataProvider(&data_socket1);
1050 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file"); 1054 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file");
1051 1055
1052 // Start the transaction. 1056 // Start the transaction.
1053 ASSERT_EQ(ERR_IO_PENDING, 1057 ASSERT_EQ(ERR_IO_PENDING,
1054 transaction_.Start(&request_info, &callback_, BoundNetLog())); 1058 transaction_.Start(&request_info, callback_.callback(),
1059 BoundNetLog()));
1055 ASSERT_EQ(OK, callback_.WaitForResult()); 1060 ASSERT_EQ(OK, callback_.WaitForResult());
1056 1061
1057 // The transaction fires the callback when we can start reading data. That 1062 // The transaction fires the callback when we can start reading data. That
1058 // means that the data socket should be open. 1063 // means that the data socket should be open.
1059 MockTCPClientSocket* data_socket = 1064 MockTCPClientSocket* data_socket =
1060 mock_socket_factory_.GetMockTCPClientSocket(1); 1065 mock_socket_factory_.GetMockTCPClientSocket(1);
1061 ASSERT_TRUE(data_socket); 1066 ASSERT_TRUE(data_socket);
1062 ASSERT_TRUE(data_socket->IsConnected()); 1067 ASSERT_TRUE(data_socket->IsConnected());
1063 1068
1064 // Even if the PASV response specified some other address, we connect 1069 // Even if the PASV response specified some other address, we connect
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 TEST_F(FtpNetworkTransactionTest, EvilRestartUser) { 1173 TEST_F(FtpNetworkTransactionTest, EvilRestartUser) {
1169 FtpSocketDataProvider ctrl_socket1; 1174 FtpSocketDataProvider ctrl_socket1;
1170 ctrl_socket1.InjectFailure(FtpSocketDataProvider::PRE_PASSWD, 1175 ctrl_socket1.InjectFailure(FtpSocketDataProvider::PRE_PASSWD,
1171 FtpSocketDataProvider::PRE_QUIT, 1176 FtpSocketDataProvider::PRE_QUIT,
1172 "530 Login authentication failed\r\n"); 1177 "530 Login authentication failed\r\n");
1173 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket1); 1178 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket1);
1174 1179
1175 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file"); 1180 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file");
1176 1181
1177 ASSERT_EQ(ERR_IO_PENDING, 1182 ASSERT_EQ(ERR_IO_PENDING,
1178 transaction_.Start(&request_info, &callback_, BoundNetLog())); 1183 transaction_.Start(&request_info, callback_.callback(),
1184 BoundNetLog()));
1179 ASSERT_EQ(ERR_FTP_FAILED, callback_.WaitForResult()); 1185 ASSERT_EQ(ERR_FTP_FAILED, callback_.WaitForResult());
1180 1186
1181 MockRead ctrl_reads[] = { 1187 MockRead ctrl_reads[] = {
1182 MockRead("220 host TestFTPd\r\n"), 1188 MockRead("220 host TestFTPd\r\n"),
1183 MockRead("221 Goodbye!\r\n"), 1189 MockRead("221 Goodbye!\r\n"),
1184 MockRead(false, OK), 1190 MockRead(false, OK),
1185 }; 1191 };
1186 MockWrite ctrl_writes[] = { 1192 MockWrite ctrl_writes[] = {
1187 MockWrite("QUIT\r\n"), 1193 MockWrite("QUIT\r\n"),
1188 }; 1194 };
1189 StaticSocketDataProvider ctrl_socket2(ctrl_reads, arraysize(ctrl_reads), 1195 StaticSocketDataProvider ctrl_socket2(ctrl_reads, arraysize(ctrl_reads),
1190 ctrl_writes, arraysize(ctrl_writes)); 1196 ctrl_writes, arraysize(ctrl_writes));
1191 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket2); 1197 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket2);
1192 ASSERT_EQ(ERR_IO_PENDING, 1198 ASSERT_EQ(ERR_IO_PENDING,
1193 transaction_.RestartWithAuth( 1199 transaction_.RestartWithAuth(
1194 AuthCredentials( 1200 AuthCredentials(
1195 ASCIIToUTF16("foo\nownz0red"), 1201 ASCIIToUTF16("foo\nownz0red"),
1196 ASCIIToUTF16("innocent")), 1202 ASCIIToUTF16("innocent")),
1197 &callback_)); 1203 callback_.callback()));
1198 EXPECT_EQ(ERR_MALFORMED_IDENTITY, callback_.WaitForResult()); 1204 EXPECT_EQ(ERR_MALFORMED_IDENTITY, callback_.WaitForResult());
1199 } 1205 }
1200 1206
1201 TEST_F(FtpNetworkTransactionTest, EvilRestartPassword) { 1207 TEST_F(FtpNetworkTransactionTest, EvilRestartPassword) {
1202 FtpSocketDataProvider ctrl_socket1; 1208 FtpSocketDataProvider ctrl_socket1;
1203 ctrl_socket1.InjectFailure(FtpSocketDataProvider::PRE_PASSWD, 1209 ctrl_socket1.InjectFailure(FtpSocketDataProvider::PRE_PASSWD,
1204 FtpSocketDataProvider::PRE_QUIT, 1210 FtpSocketDataProvider::PRE_QUIT,
1205 "530 Login authentication failed\r\n"); 1211 "530 Login authentication failed\r\n");
1206 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket1); 1212 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket1);
1207 1213
1208 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file"); 1214 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file");
1209 1215
1210 ASSERT_EQ(ERR_IO_PENDING, 1216 ASSERT_EQ(ERR_IO_PENDING,
1211 transaction_.Start(&request_info, &callback_, BoundNetLog())); 1217 transaction_.Start(&request_info, callback_.callback(),
1218 BoundNetLog()));
1212 ASSERT_EQ(ERR_FTP_FAILED, callback_.WaitForResult()); 1219 ASSERT_EQ(ERR_FTP_FAILED, callback_.WaitForResult());
1213 1220
1214 MockRead ctrl_reads[] = { 1221 MockRead ctrl_reads[] = {
1215 MockRead("220 host TestFTPd\r\n"), 1222 MockRead("220 host TestFTPd\r\n"),
1216 MockRead("331 User okay, send password\r\n"), 1223 MockRead("331 User okay, send password\r\n"),
1217 MockRead("221 Goodbye!\r\n"), 1224 MockRead("221 Goodbye!\r\n"),
1218 MockRead(false, OK), 1225 MockRead(false, OK),
1219 }; 1226 };
1220 MockWrite ctrl_writes[] = { 1227 MockWrite ctrl_writes[] = {
1221 MockWrite("USER innocent\r\n"), 1228 MockWrite("USER innocent\r\n"),
1222 MockWrite("QUIT\r\n"), 1229 MockWrite("QUIT\r\n"),
1223 }; 1230 };
1224 StaticSocketDataProvider ctrl_socket2(ctrl_reads, arraysize(ctrl_reads), 1231 StaticSocketDataProvider ctrl_socket2(ctrl_reads, arraysize(ctrl_reads),
1225 ctrl_writes, arraysize(ctrl_writes)); 1232 ctrl_writes, arraysize(ctrl_writes));
1226 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket2); 1233 mock_socket_factory_.AddSocketDataProvider(&ctrl_socket2);
1227 ASSERT_EQ(ERR_IO_PENDING, 1234 ASSERT_EQ(ERR_IO_PENDING,
1228 transaction_.RestartWithAuth( 1235 transaction_.RestartWithAuth(
1229 AuthCredentials(ASCIIToUTF16("innocent"), 1236 AuthCredentials(ASCIIToUTF16("innocent"),
1230 ASCIIToUTF16("foo\nownz0red")), 1237 ASCIIToUTF16("foo\nownz0red")),
1231 &callback_)); 1238 callback_.callback()));
1232 EXPECT_EQ(ERR_MALFORMED_IDENTITY, callback_.WaitForResult()); 1239 EXPECT_EQ(ERR_MALFORMED_IDENTITY, callback_.WaitForResult());
1233 } 1240 }
1234 1241
1235 TEST_F(FtpNetworkTransactionTest, Escaping) { 1242 TEST_F(FtpNetworkTransactionTest, Escaping) {
1236 FtpSocketDataProviderEscaping ctrl_socket; 1243 FtpSocketDataProviderEscaping ctrl_socket;
1237 ExecuteTransaction(&ctrl_socket, "ftp://host/%20%21%22%23%24%25%79%80%81", 1244 ExecuteTransaction(&ctrl_socket, "ftp://host/%20%21%22%23%24%25%79%80%81",
1238 OK); 1245 OK);
1239 } 1246 }
1240 1247
1241 // Test for http://crbug.com/23794. 1248 // Test for http://crbug.com/23794.
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1461 FtpSocketDataProviderFileDownload ctrl_socket; 1468 FtpSocketDataProviderFileDownload ctrl_socket;
1462 TransactionFailHelper(&ctrl_socket, 1469 TransactionFailHelper(&ctrl_socket,
1463 "ftp://host/file", 1470 "ftp://host/file",
1464 FtpSocketDataProvider::PRE_PWD, 1471 FtpSocketDataProvider::PRE_PWD,
1465 FtpSocketDataProvider::PRE_TYPE, 1472 FtpSocketDataProvider::PRE_TYPE,
1466 "257 \"\"\r\n", 1473 "257 \"\"\r\n",
1467 OK); 1474 OK);
1468 } 1475 }
1469 1476
1470 } // namespace net 1477 } // namespace net
OLDNEW
« no previous file with comments | « net/ftp/ftp_network_transaction.cc ('k') | net/ftp/ftp_transaction.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698