| 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 54b0501d4f00b3b9acaea33915c87c6ae1478ed2..ba765a721e7d28f568e82ec50f61e9fdc16b2b6f 100644
|
| --- a/net/ftp/ftp_network_transaction_unittest.cc
|
| +++ b/net/ftp/ftp_network_transaction_unittest.cc
|
| @@ -186,6 +186,82 @@ class FtpMockControlSocketDirectoryListing : public FtpMockControlSocket {
|
| DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketDirectoryListing);
|
| };
|
|
|
| +class FtpMockControlSocketVMSDirectoryListing : public FtpMockControlSocket {
|
| + public:
|
| + FtpMockControlSocketVMSDirectoryListing() {
|
| + }
|
| +
|
| + virtual MockWriteResult OnWrite(const std::string& data) {
|
| + if (InjectFault())
|
| + return MockWriteResult(true, data.length());
|
| + switch (state()) {
|
| + case PRE_SYST:
|
| + return Verify("SYST\r\n", data, PRE_PWD, "215 VMS\r\n");
|
| + case PRE_PWD:
|
| + return Verify("PWD\r\n", data, PRE_TYPE,
|
| + "257 \"ANONYMOUS_ROOT:[000000]\"\r\n");
|
| + case PRE_SIZE:
|
| + return Verify("SIZE ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_MDTM,
|
| + "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_CWD,
|
| + "550 Can't download directory\r\n");
|
| + case PRE_CWD:
|
| + return Verify("CWD ANONYMOUS_ROOT:[dir]\r\n", data, PRE_LIST,
|
| + "200 OK\r\n");
|
| + case PRE_LIST:
|
| + return Verify("LIST *.*;0\r\n", data, PRE_QUIT, "200 OK\r\n");
|
| + default:
|
| + return FtpMockControlSocket::OnWrite(data);
|
| + }
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketVMSDirectoryListing);
|
| +};
|
| +
|
| +class FtpMockControlSocketVMSDirectoryListingRootDirectory
|
| + : public FtpMockControlSocket {
|
| + public:
|
| + FtpMockControlSocketVMSDirectoryListingRootDirectory() {
|
| + }
|
| +
|
| + virtual MockWriteResult OnWrite(const std::string& data) {
|
| + if (InjectFault())
|
| + return MockWriteResult(true, data.length());
|
| + switch (state()) {
|
| + case PRE_SYST:
|
| + return Verify("SYST\r\n", data, PRE_PWD, "215 VMS\r\n");
|
| + case PRE_PWD:
|
| + return Verify("PWD\r\n", data, PRE_TYPE,
|
| + "257 \"ANONYMOUS_ROOT:[000000]\"\r\n");
|
| + case PRE_SIZE:
|
| + return Verify("SIZE ANONYMOUS_ROOT\r\n", data, PRE_MDTM,
|
| + "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_CWD,
|
| + "550 Can't download directory\r\n");
|
| + case PRE_CWD:
|
| + return Verify("CWD ANONYMOUS_ROOT:[000000]\r\n", data, PRE_LIST,
|
| + "200 OK\r\n");
|
| + case PRE_LIST:
|
| + return Verify("LIST *.*;0\r\n", data, PRE_QUIT, "200 OK\r\n");
|
| + default:
|
| + return FtpMockControlSocket::OnWrite(data);
|
| + }
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(
|
| + FtpMockControlSocketVMSDirectoryListingRootDirectory);
|
| +};
|
| +
|
| class FtpMockControlSocketFileDownload : public FtpMockControlSocket {
|
| public:
|
| FtpMockControlSocketFileDownload() {
|
| @@ -212,6 +288,38 @@ class FtpMockControlSocketFileDownload : public FtpMockControlSocket {
|
| DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketFileDownload);
|
| };
|
|
|
| +class FtpMockControlSocketVMSFileDownload : public FtpMockControlSocket {
|
| + public:
|
| + FtpMockControlSocketVMSFileDownload() {
|
| + }
|
| +
|
| + virtual MockWriteResult OnWrite(const std::string& data) {
|
| + if (InjectFault())
|
| + return MockWriteResult(true, data.length());
|
| + switch (state()) {
|
| + case PRE_SYST:
|
| + return Verify("SYST\r\n", data, PRE_PWD, "215 VMS\r\n");
|
| + case PRE_PWD:
|
| + return Verify("PWD\r\n", data, PRE_TYPE,
|
| + "257 \"ANONYMOUS_ROOT:[000000]\"\r\n");
|
| + case PRE_SIZE:
|
| + return Verify("SIZE ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_MDTM,
|
| + "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");
|
| + default:
|
| + return FtpMockControlSocket::OnWrite(data);
|
| + }
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketVMSFileDownload);
|
| +};
|
| +
|
| class FtpMockControlSocketEscaping : public FtpMockControlSocket {
|
| public:
|
| FtpMockControlSocketEscaping() {
|
| @@ -491,6 +599,16 @@ TEST_F(FtpNetworkTransactionTest, DirectoryTransactionMultilineWelcomeShort) {
|
| ExecuteTransaction(&ctrl_socket, "ftp://host", OK);
|
| }
|
|
|
| +TEST_F(FtpNetworkTransactionTest, DirectoryTransactionVMS) {
|
| + FtpMockControlSocketVMSDirectoryListing ctrl_socket;
|
| + ExecuteTransaction(&ctrl_socket, "ftp://host/dir", OK);
|
| +}
|
| +
|
| +TEST_F(FtpNetworkTransactionTest, DirectoryTransactionVMSRootDirectory) {
|
| + FtpMockControlSocketVMSDirectoryListingRootDirectory ctrl_socket;
|
| + ExecuteTransaction(&ctrl_socket, "ftp://host", OK);
|
| +}
|
| +
|
| TEST_F(FtpNetworkTransactionTest, DownloadTransaction) {
|
| FtpMockControlSocketFileDownload ctrl_socket;
|
| ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
|
| @@ -514,6 +632,11 @@ TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads5) {
|
| ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
|
| }
|
|
|
| +TEST_F(FtpNetworkTransactionTest, DownloadTransactionVMS) {
|
| + FtpMockControlSocketVMSFileDownload ctrl_socket;
|
| + ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
|
| +}
|
| +
|
| TEST_F(FtpNetworkTransactionTest, DownloadTransactionAcceptedDataConnection) {
|
| FtpMockControlSocketFileDownloadAcceptedDataConnection ctrl_socket;
|
| std::string mock_data("mock-data");
|
|
|