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 1a5ed536d9b856c126b5e21e0786923a01f424b3..1ca325356ffb726173c9170b1edcb6b9c6c8bc45 100644 |
--- a/net/ftp/ftp_network_transaction_unittest.cc |
+++ b/net/ftp/ftp_network_transaction_unittest.cc |
@@ -39,12 +39,9 @@ class FtpSocketDataProvider : public DynamicSocketDataProvider { |
PRE_EPSV, |
PRE_PASV, |
PRE_SIZE, |
- PRE_MDTM, |
PRE_MLSD, |
PRE_LIST, |
PRE_RETR, |
- PRE_EPSV2, |
- PRE_PASV2, |
PRE_CWD, |
PRE_QUIT, |
PRE_NOPASV, |
@@ -83,16 +80,6 @@ class FtpSocketDataProvider : public DynamicSocketDataProvider { |
case PRE_EPSV: |
return Verify("EPSV\r\n", data, PRE_SIZE, |
"227 Entering Extended Passive Mode (|||31744|)\r\n"); |
- case PRE_EPSV2: |
- return Verify("EPSV\r\n", data, PRE_CWD, |
- "227 Entering Extended Passive Mode (|||31744|)\r\n"); |
- case PRE_PASV: |
- return Verify("PASV\r\n", data, PRE_SIZE, |
- "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
- case PRE_PASV2: |
- // Parser should also accept format without parentheses. |
- return Verify("PASV\r\n", data, PRE_CWD, |
- "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
case PRE_NOPASV: |
return Verify("PASV\r\n", data, PRE_QUIT, |
"500 not going to happen\r\n"); |
@@ -195,14 +182,8 @@ class FtpSocketDataProviderDirectoryListing : public FtpSocketDataProvider { |
return MockWriteResult(true, data.length()); |
switch (state()) { |
case PRE_SIZE: |
- return Verify("SIZE /\r\n", data, PRE_MDTM, |
+ return Verify("SIZE /\r\n", data, PRE_CWD, |
"550 I can only retrieve regular files\r\n"); |
- case PRE_MDTM: |
- return Verify("MDTM /\r\n", data, PRE_RETR, |
- "213 20070221112533\r\n"); |
- case PRE_RETR: |
- return Verify("RETR /\r\n", data, PRE_EPSV2, |
- "550 Can't download directory\r\n"); |
case PRE_CWD: |
return Verify("CWD /\r\n", data, PRE_MLSD, "200 OK\r\n"); |
case PRE_MLSD: |
@@ -233,9 +214,9 @@ class FtpSocketDataProviderDirectoryListingWithPasvFallback |
case PRE_EPSV: |
return Verify("EPSV\r\n", data, PRE_PASV, |
"500 no EPSV for you\r\n"); |
- case PRE_RETR: |
- return Verify("RETR /\r\n", data, PRE_PASV2, |
- "550 Can't download directory\r\n"); |
+ case PRE_PASV: |
+ return Verify("PASV\r\n", data, PRE_SIZE, |
+ "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
default: |
return FtpSocketDataProviderDirectoryListing::OnWrite(data); |
} |
@@ -246,36 +227,6 @@ class FtpSocketDataProviderDirectoryListingWithPasvFallback |
FtpSocketDataProviderDirectoryListingWithPasvFallback); |
}; |
-class FtpSocketDataProviderDirectoryListingWithTypecode |
- : public FtpSocketDataProvider { |
- public: |
- FtpSocketDataProviderDirectoryListingWithTypecode() { |
- } |
- |
- virtual MockWriteResult OnWrite(const std::string& data) { |
- if (InjectFault()) |
- return MockWriteResult(true, data.length()); |
- switch (state()) { |
- case PRE_EPSV: |
- return Verify("EPSV\r\n", data, PRE_CWD, |
- "227 Entering Passive Mode (|||31744|)\r\n"); |
- case PRE_CWD: |
- return Verify("CWD /\r\n", data, PRE_MLSD, "200 OK\r\n"); |
- case PRE_MLSD: |
- return Verify("MLSD\r\n", data, PRE_QUIT, |
- "150 Accepted data connection\r\n" |
- "226 MLSD complete\r\n"); |
- case PRE_LIST: |
- return Verify("LIST\r\n", data, PRE_QUIT, "200 OK\r\n"); |
- default: |
- return FtpSocketDataProvider::OnWrite(data); |
- } |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(FtpSocketDataProviderDirectoryListingWithTypecode); |
-}; |
- |
class FtpSocketDataProviderVMSDirectoryListing : public FtpSocketDataProvider { |
public: |
FtpSocketDataProviderVMSDirectoryListing() { |
@@ -290,15 +241,14 @@ class FtpSocketDataProviderVMSDirectoryListing : public FtpSocketDataProvider { |
case PRE_PWD: |
return Verify("PWD\r\n", data, PRE_TYPE, |
"257 \"ANONYMOUS_ROOT:[000000]\"\r\n"); |
+ case PRE_EPSV: |
+ return Verify("EPSV\r\n", data, PRE_PASV, "500 Invalid command\r\n"); |
+ case PRE_PASV: |
+ return Verify("PASV\r\n", data, PRE_SIZE, |
+ "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
case PRE_SIZE: |
- return Verify("SIZE ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_MDTM, |
+ return Verify("SIZE ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_CWD, |
"550 I can only retrieve regular files\r\n"); |
- case PRE_MDTM: |
- return Verify("MDTM ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_RETR, |
- "213 20070221112533\r\n"); |
- case PRE_RETR: |
- return Verify("RETR ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_EPSV2, |
- "550 Can't download directory\r\n"); |
case PRE_CWD: |
return Verify("CWD ANONYMOUS_ROOT:[dir]\r\n", data, PRE_MLSD, |
"200 OK\r\n"); |
@@ -333,15 +283,12 @@ class FtpSocketDataProviderVMSDirectoryListingRootDirectory |
case PRE_EPSV: |
return Verify("EPSV\r\n", data, PRE_PASV, |
"500 EPSV command unknown\r\n"); |
+ case PRE_PASV: |
+ return Verify("PASV\r\n", data, PRE_SIZE, |
+ "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
case PRE_SIZE: |
- return Verify("SIZE ANONYMOUS_ROOT\r\n", data, PRE_MDTM, |
+ return Verify("SIZE ANONYMOUS_ROOT\r\n", data, PRE_CWD, |
"550 I can only retrieve regular files\r\n"); |
- case PRE_MDTM: |
- return Verify("MDTM ANONYMOUS_ROOT\r\n", data, PRE_RETR, |
- "213 20070221112533\r\n"); |
- case PRE_RETR: |
- return Verify("RETR ANONYMOUS_ROOT\r\n", data, PRE_PASV2, |
- "550 Can't download directory\r\n"); |
case PRE_CWD: |
return Verify("CWD ANONYMOUS_ROOT:[000000]\r\n", data, PRE_MLSD, |
"200 OK\r\n"); |
@@ -369,11 +316,8 @@ class FtpSocketDataProviderFileDownload : public FtpSocketDataProvider { |
return MockWriteResult(true, data.length()); |
switch (state()) { |
case PRE_SIZE: |
- return Verify("SIZE /file\r\n", data, PRE_MDTM, |
+ return Verify("SIZE /file\r\n", data, PRE_RETR, |
"213 18\r\n"); |
- case PRE_MDTM: |
- return Verify("MDTM /file\r\n", data, PRE_RETR, |
- "213 20070221112533\r\n"); |
case PRE_RETR: |
return Verify("RETR /file\r\n", data, PRE_QUIT, "200 OK\r\n"); |
default: |
@@ -398,6 +342,9 @@ class FtpSocketDataProviderFileDownloadWithPasvFallback |
case PRE_EPSV: |
return Verify("EPSV\r\n", data, PRE_PASV, |
"500 No can do\r\n"); |
+ case PRE_PASV: |
+ return Verify("PASV\r\n", data, PRE_SIZE, |
+ "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
default: |
return FtpSocketDataProviderFileDownload::OnWrite(data); |
} |
@@ -421,12 +368,15 @@ class FtpSocketDataProviderVMSFileDownload : public FtpSocketDataProvider { |
case PRE_PWD: |
return Verify("PWD\r\n", data, PRE_TYPE, |
"257 \"ANONYMOUS_ROOT:[000000]\"\r\n"); |
+ case PRE_EPSV: |
+ return Verify("EPSV\r\n", data, PRE_PASV, |
+ "500 EPSV command unknown\r\n"); |
+ case PRE_PASV: |
+ return Verify("PASV\r\n", data, PRE_SIZE, |
+ "227 Entering Passive Mode 127,0,0,1,123,456\r\n"); |
case PRE_SIZE: |
- return Verify("SIZE ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_MDTM, |
+ return Verify("SIZE ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_RETR, |
"213 18\r\n"); |
- case PRE_MDTM: |
- return Verify("MDTM ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_RETR, |
- "213 20070221112533\r\n"); |
case PRE_RETR: |
return Verify("RETR ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_QUIT, |
"200 OK\r\n"); |
@@ -439,7 +389,7 @@ class FtpSocketDataProviderVMSFileDownload : public FtpSocketDataProvider { |
DISALLOW_COPY_AND_ASSIGN(FtpSocketDataProviderVMSFileDownload); |
}; |
-class FtpSocketDataProviderEscaping : public FtpSocketDataProvider { |
+class FtpSocketDataProviderEscaping : public FtpSocketDataProviderFileDownload { |
public: |
FtpSocketDataProviderEscaping() { |
} |
@@ -449,16 +399,13 @@ class FtpSocketDataProviderEscaping : public FtpSocketDataProvider { |
return MockWriteResult(true, data.length()); |
switch (state()) { |
case PRE_SIZE: |
- return Verify("SIZE / !\"#$%y\200\201\r\n", data, PRE_MDTM, |
+ return Verify("SIZE / !\"#$%y\200\201\r\n", data, PRE_RETR, |
"213 18\r\n"); |
- case PRE_MDTM: |
- return Verify("MDTM / !\"#$%y\200\201\r\n", data, PRE_RETR, |
- "213 20070221112533\r\n"); |
case PRE_RETR: |
return Verify("RETR / !\"#$%y\200\201\r\n", data, PRE_QUIT, |
"200 OK\r\n"); |
default: |
- return FtpSocketDataProvider::OnWrite(data); |
+ return FtpSocketDataProviderFileDownload::OnWrite(data); |
} |
} |
@@ -538,28 +485,6 @@ class FtpSocketDataProviderFileDownloadInvalidResponse |
DISALLOW_COPY_AND_ASSIGN(FtpSocketDataProviderFileDownloadInvalidResponse); |
}; |
-class FtpSocketDataProviderFileDownloadRetrFail |
- : public FtpSocketDataProviderFileDownload { |
- public: |
- FtpSocketDataProviderFileDownloadRetrFail() { |
- } |
- |
- virtual MockWriteResult OnWrite(const std::string& data) { |
- if (InjectFault()) |
- return MockWriteResult(true, data.length()); |
- switch (state()) { |
- case PRE_CWD: |
- return Verify("CWD /file\r\n", data, PRE_QUIT, |
- "550 file is a directory\r\n"); |
- default: |
- return FtpSocketDataProviderFileDownload::OnWrite(data); |
- } |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(FtpSocketDataProviderFileDownloadRetrFail); |
-}; |
- |
class FtpSocketDataProviderEvilEpsv : public FtpSocketDataProviderFileDownload { |
public: |
FtpSocketDataProviderEvilEpsv(const char* epsv_response, |
@@ -817,7 +742,7 @@ TEST_F(FtpNetworkTransactionTest, DirectoryTransactionWithPasvFallback) { |
} |
TEST_F(FtpNetworkTransactionTest, DirectoryTransactionWithTypecode) { |
- FtpSocketDataProviderDirectoryListingWithTypecode ctrl_socket; |
+ FtpSocketDataProviderDirectoryListing ctrl_socket; |
ExecuteTransaction(&ctrl_socket, "ftp://host;type=d", OK); |
EXPECT_TRUE(transaction_.GetResponseInfo()->is_directory_listing); |
@@ -1177,7 +1102,7 @@ TEST_F(FtpNetworkTransactionTest, DownloadTransactionBigSize) { |
// Pass a valid, but large file size. The transaction should not fail. |
FtpSocketDataProviderEvilSize ctrl_socket( |
"213 3204427776\r\n", |
- FtpSocketDataProvider::PRE_MDTM); |
+ FtpSocketDataProvider::PRE_RETR); |
ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); |
EXPECT_EQ(3204427776LL, |
transaction_.GetResponseInfo()->expected_content_size); |
@@ -1260,36 +1185,6 @@ TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailEpsv) { |
ERR_FTP_PASV_COMMAND_FAILED); |
} |
-TEST_F(FtpNetworkTransactionTest, DirectoryTransactionMalformedMdtm) { |
- FtpSocketDataProviderDirectoryListing ctrl_socket; |
- TransactionFailHelper(&ctrl_socket, |
- "ftp://host", |
- FtpSocketDataProvider::PRE_MDTM, |
- FtpSocketDataProvider::PRE_RETR, |
- "213 foobar\r\n", |
- OK); |
-} |
- |
-TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailMdtm) { |
- FtpSocketDataProviderDirectoryListing ctrl_socket; |
- TransactionFailHelper(&ctrl_socket, |
- "ftp://host", |
- FtpSocketDataProvider::PRE_MDTM, |
- FtpSocketDataProvider::PRE_RETR, |
- "500 failed mdtm\r\n", |
- OK); |
-} |
- |
-TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailEpsv2) { |
- FtpSocketDataProviderDirectoryListing ctrl_socket; |
- TransactionFailHelper(&ctrl_socket, |
- "ftp://host", |
- FtpSocketDataProvider::PRE_EPSV2, |
- FtpSocketDataProvider::PRE_NOPASV, |
- "500 failed epsv2\r\n", |
- ERR_FTP_PASV_COMMAND_FAILED); |
-} |
- |
TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailCwd) { |
FtpSocketDataProviderDirectoryListing ctrl_socket; |
TransactionFailHelper(&ctrl_socket, |
@@ -1390,18 +1285,8 @@ TEST_F(FtpNetworkTransactionTest, DownloadTransactionFailEpsv) { |
ERR_FTP_PASV_COMMAND_FAILED); |
} |
-TEST_F(FtpNetworkTransactionTest, DownloadTransactionFailMdtm) { |
- FtpSocketDataProviderFileDownload ctrl_socket; |
- TransactionFailHelper(&ctrl_socket, |
- "ftp://host/file", |
- FtpSocketDataProvider::PRE_MDTM, |
- FtpSocketDataProvider::PRE_RETR, |
- "500 failed mdtm\r\n", |
- OK); |
-} |
- |
TEST_F(FtpNetworkTransactionTest, DownloadTransactionFailRetr) { |
- FtpSocketDataProviderFileDownloadRetrFail ctrl_socket; |
+ FtpSocketDataProviderFileDownload ctrl_socket; |
TransactionFailHelper(&ctrl_socket, |
"ftp://host/file", |
FtpSocketDataProvider::PRE_RETR, |
@@ -1411,13 +1296,13 @@ TEST_F(FtpNetworkTransactionTest, DownloadTransactionFailRetr) { |
} |
TEST_F(FtpNetworkTransactionTest, DownloadTransactionFileNotFound) { |
- FtpSocketDataProviderFileDownloadRetrFail ctrl_socket; |
+ FtpSocketDataProviderFileDownload ctrl_socket; |
TransactionFailHelper(&ctrl_socket, |
- "ftp://host/file", |
- FtpSocketDataProvider::PRE_RETR, |
- FtpSocketDataProvider::PRE_EPSV2, |
- "550 cannot open file\r\n", |
- ERR_FILE_NOT_FOUND); |
+ "ftp://host/file;type=i", |
+ FtpSocketDataProvider::PRE_SIZE, |
+ FtpSocketDataProvider::PRE_QUIT, |
+ "550 File Not Found\r\n", |
+ ERR_FAILED); |
} |
// Test for http://crbug.com/38845. |