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

Unified Diff: net/ftp/ftp_network_transaction_unittest.cc

Issue 2813044: FTP: change order of commands to improve compatibility (Closed)
Patch Set: simplified Created 10 years, 5 months 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 side-by-side diff with in-line comments
Download patch
« net/ftp/ftp_network_transaction.cc ('K') | « net/ftp/ftp_network_transaction.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« net/ftp/ftp_network_transaction.cc ('K') | « net/ftp/ftp_network_transaction.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698