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

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

Issue 215058: Correctly talk to VMS servers (translate UNIX paths to VMS and vice versa). (Closed)
Patch Set: fixes Created 11 years, 3 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 unified diff | Download patch
« no previous file with comments | « net/ftp/ftp_network_transaction.cc ('k') | net/ftp/ftp_util.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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #if defined(OS_WIN) 9 #if defined(OS_WIN)
10 #include <ws2tcpip.h> 10 #include <ws2tcpip.h>
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 return Verify("LIST\r\n", data, PRE_QUIT, "200 OK\r\n"); 179 return Verify("LIST\r\n", data, PRE_QUIT, "200 OK\r\n");
180 default: 180 default:
181 return FtpMockControlSocket::OnWrite(data); 181 return FtpMockControlSocket::OnWrite(data);
182 } 182 }
183 } 183 }
184 184
185 private: 185 private:
186 DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketDirectoryListing); 186 DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketDirectoryListing);
187 }; 187 };
188 188
189 class FtpMockControlSocketVMSDirectoryListing : public FtpMockControlSocket {
190 public:
191 FtpMockControlSocketVMSDirectoryListing() {
192 }
193
194 virtual MockWriteResult OnWrite(const std::string& data) {
195 if (InjectFault())
196 return MockWriteResult(true, data.length());
197 switch (state()) {
198 case PRE_SYST:
199 return Verify("SYST\r\n", data, PRE_PWD, "215 VMS\r\n");
200 case PRE_PWD:
201 return Verify("PWD\r\n", data, PRE_TYPE,
202 "257 \"ANONYMOUS_ROOT:[000000]\"\r\n");
203 case PRE_SIZE:
204 return Verify("SIZE ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_MDTM,
205 "550 I can only retrieve regular files\r\n");
206 case PRE_MDTM:
207 return Verify("MDTM ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_RETR,
208 "213 20070221112533\r\n");
209 case PRE_RETR:
210 return Verify("RETR ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_CWD,
211 "550 Can't download directory\r\n");
212 case PRE_CWD:
213 return Verify("CWD ANONYMOUS_ROOT:[dir]\r\n", data, PRE_LIST,
214 "200 OK\r\n");
215 case PRE_LIST:
216 return Verify("LIST *.*;0\r\n", data, PRE_QUIT, "200 OK\r\n");
217 default:
218 return FtpMockControlSocket::OnWrite(data);
219 }
220 }
221
222 private:
223 DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketVMSDirectoryListing);
224 };
225
226 class FtpMockControlSocketVMSDirectoryListingRootDirectory
227 : public FtpMockControlSocket {
228 public:
229 FtpMockControlSocketVMSDirectoryListingRootDirectory() {
230 }
231
232 virtual MockWriteResult OnWrite(const std::string& data) {
233 if (InjectFault())
234 return MockWriteResult(true, data.length());
235 switch (state()) {
236 case PRE_SYST:
237 return Verify("SYST\r\n", data, PRE_PWD, "215 VMS\r\n");
238 case PRE_PWD:
239 return Verify("PWD\r\n", data, PRE_TYPE,
240 "257 \"ANONYMOUS_ROOT:[000000]\"\r\n");
241 case PRE_SIZE:
242 return Verify("SIZE ANONYMOUS_ROOT\r\n", data, PRE_MDTM,
243 "550 I can only retrieve regular files\r\n");
244 case PRE_MDTM:
245 return Verify("MDTM ANONYMOUS_ROOT\r\n", data, PRE_RETR,
246 "213 20070221112533\r\n");
247 case PRE_RETR:
248 return Verify("RETR ANONYMOUS_ROOT\r\n", data, PRE_CWD,
249 "550 Can't download directory\r\n");
250 case PRE_CWD:
251 return Verify("CWD ANONYMOUS_ROOT:[000000]\r\n", data, PRE_LIST,
252 "200 OK\r\n");
253 case PRE_LIST:
254 return Verify("LIST *.*;0\r\n", data, PRE_QUIT, "200 OK\r\n");
255 default:
256 return FtpMockControlSocket::OnWrite(data);
257 }
258 }
259
260 private:
261 DISALLOW_COPY_AND_ASSIGN(
262 FtpMockControlSocketVMSDirectoryListingRootDirectory);
263 };
264
189 class FtpMockControlSocketFileDownload : public FtpMockControlSocket { 265 class FtpMockControlSocketFileDownload : public FtpMockControlSocket {
190 public: 266 public:
191 FtpMockControlSocketFileDownload() { 267 FtpMockControlSocketFileDownload() {
192 } 268 }
193 269
194 virtual MockWriteResult OnWrite(const std::string& data) { 270 virtual MockWriteResult OnWrite(const std::string& data) {
195 if (InjectFault()) 271 if (InjectFault())
196 return MockWriteResult(true, data.length()); 272 return MockWriteResult(true, data.length());
197 switch (state()) { 273 switch (state()) {
198 case PRE_SIZE: 274 case PRE_SIZE:
199 return Verify("SIZE /file\r\n", data, PRE_MDTM, 275 return Verify("SIZE /file\r\n", data, PRE_MDTM,
200 "213 18\r\n"); 276 "213 18\r\n");
201 case PRE_MDTM: 277 case PRE_MDTM:
202 return Verify("MDTM /file\r\n", data, PRE_RETR, 278 return Verify("MDTM /file\r\n", data, PRE_RETR,
203 "213 20070221112533\r\n"); 279 "213 20070221112533\r\n");
204 case PRE_RETR: 280 case PRE_RETR:
205 return Verify("RETR /file\r\n", data, PRE_QUIT, "200 OK\r\n"); 281 return Verify("RETR /file\r\n", data, PRE_QUIT, "200 OK\r\n");
206 default: 282 default:
207 return FtpMockControlSocket::OnWrite(data); 283 return FtpMockControlSocket::OnWrite(data);
208 } 284 }
209 } 285 }
210 286
211 private: 287 private:
212 DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketFileDownload); 288 DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketFileDownload);
213 }; 289 };
214 290
291 class FtpMockControlSocketVMSFileDownload : public FtpMockControlSocket {
292 public:
293 FtpMockControlSocketVMSFileDownload() {
294 }
295
296 virtual MockWriteResult OnWrite(const std::string& data) {
297 if (InjectFault())
298 return MockWriteResult(true, data.length());
299 switch (state()) {
300 case PRE_SYST:
301 return Verify("SYST\r\n", data, PRE_PWD, "215 VMS\r\n");
302 case PRE_PWD:
303 return Verify("PWD\r\n", data, PRE_TYPE,
304 "257 \"ANONYMOUS_ROOT:[000000]\"\r\n");
305 case PRE_SIZE:
306 return Verify("SIZE ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_MDTM,
307 "213 18\r\n");
308 case PRE_MDTM:
309 return Verify("MDTM ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_RETR,
310 "213 20070221112533\r\n");
311 case PRE_RETR:
312 return Verify("RETR ANONYMOUS_ROOT:[000000]file\r\n", data, PRE_QUIT,
313 "200 OK\r\n");
314 default:
315 return FtpMockControlSocket::OnWrite(data);
316 }
317 }
318
319 private:
320 DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketVMSFileDownload);
321 };
322
215 class FtpMockControlSocketEscaping : public FtpMockControlSocket { 323 class FtpMockControlSocketEscaping : public FtpMockControlSocket {
216 public: 324 public:
217 FtpMockControlSocketEscaping() { 325 FtpMockControlSocketEscaping() {
218 } 326 }
219 327
220 virtual MockWriteResult OnWrite(const std::string& data) { 328 virtual MockWriteResult OnWrite(const std::string& data) {
221 if (InjectFault()) 329 if (InjectFault())
222 return MockWriteResult(true, data.length()); 330 return MockWriteResult(true, data.length());
223 switch (state()) { 331 switch (state()) {
224 case PRE_SIZE: 332 case PRE_SIZE:
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 TEST_F(FtpNetworkTransactionTest, DirectoryTransactionMultilineWelcomeShort) { 592 TEST_F(FtpNetworkTransactionTest, DirectoryTransactionMultilineWelcomeShort) {
485 FtpMockControlSocketDirectoryListing ctrl_socket; 593 FtpMockControlSocketDirectoryListing ctrl_socket;
486 // The client will not consume all three 230 lines. That's good, we want to 594 // The client will not consume all three 230 lines. That's good, we want to
487 // test that scenario. 595 // test that scenario.
488 ctrl_socket.allow_unconsumed_reads(true); 596 ctrl_socket.allow_unconsumed_reads(true);
489 ctrl_socket.set_multiline_welcome(true); 597 ctrl_socket.set_multiline_welcome(true);
490 ctrl_socket.set_short_read_limit(5); 598 ctrl_socket.set_short_read_limit(5);
491 ExecuteTransaction(&ctrl_socket, "ftp://host", OK); 599 ExecuteTransaction(&ctrl_socket, "ftp://host", OK);
492 } 600 }
493 601
602 TEST_F(FtpNetworkTransactionTest, DirectoryTransactionVMS) {
603 FtpMockControlSocketVMSDirectoryListing ctrl_socket;
604 ExecuteTransaction(&ctrl_socket, "ftp://host/dir", OK);
605 }
606
607 TEST_F(FtpNetworkTransactionTest, DirectoryTransactionVMSRootDirectory) {
608 FtpMockControlSocketVMSDirectoryListingRootDirectory ctrl_socket;
609 ExecuteTransaction(&ctrl_socket, "ftp://host", OK);
610 }
611
494 TEST_F(FtpNetworkTransactionTest, DownloadTransaction) { 612 TEST_F(FtpNetworkTransactionTest, DownloadTransaction) {
495 FtpMockControlSocketFileDownload ctrl_socket; 613 FtpMockControlSocketFileDownload ctrl_socket;
496 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); 614 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
497 } 615 }
498 616
499 TEST_F(FtpNetworkTransactionTest, DownloadTransactionMultilineWelcome) { 617 TEST_F(FtpNetworkTransactionTest, DownloadTransactionMultilineWelcome) {
500 FtpMockControlSocketFileDownload ctrl_socket; 618 FtpMockControlSocketFileDownload ctrl_socket;
501 ctrl_socket.set_multiline_welcome(true); 619 ctrl_socket.set_multiline_welcome(true);
502 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); 620 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
503 } 621 }
504 622
505 TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads2) { 623 TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads2) {
506 FtpMockControlSocketFileDownload ctrl_socket; 624 FtpMockControlSocketFileDownload ctrl_socket;
507 ctrl_socket.set_short_read_limit(2); 625 ctrl_socket.set_short_read_limit(2);
508 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); 626 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
509 } 627 }
510 628
511 TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads5) { 629 TEST_F(FtpNetworkTransactionTest, DownloadTransactionShortReads5) {
512 FtpMockControlSocketFileDownload ctrl_socket; 630 FtpMockControlSocketFileDownload ctrl_socket;
513 ctrl_socket.set_short_read_limit(5); 631 ctrl_socket.set_short_read_limit(5);
514 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK); 632 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
515 } 633 }
516 634
635 TEST_F(FtpNetworkTransactionTest, DownloadTransactionVMS) {
636 FtpMockControlSocketVMSFileDownload ctrl_socket;
637 ExecuteTransaction(&ctrl_socket, "ftp://host/file", OK);
638 }
639
517 TEST_F(FtpNetworkTransactionTest, DownloadTransactionAcceptedDataConnection) { 640 TEST_F(FtpNetworkTransactionTest, DownloadTransactionAcceptedDataConnection) {
518 FtpMockControlSocketFileDownloadAcceptedDataConnection ctrl_socket; 641 FtpMockControlSocketFileDownloadAcceptedDataConnection ctrl_socket;
519 std::string mock_data("mock-data"); 642 std::string mock_data("mock-data");
520 MockRead data_reads[] = { 643 MockRead data_reads[] = {
521 MockRead(mock_data.c_str()), 644 MockRead(mock_data.c_str()),
522 }; 645 };
523 StaticMockSocket data_socket1(data_reads, NULL); 646 StaticMockSocket data_socket1(data_reads, NULL);
524 mock_socket_factory_.AddMockSocket(&ctrl_socket); 647 mock_socket_factory_.AddMockSocket(&ctrl_socket);
525 mock_socket_factory_.AddMockSocket(&data_socket1); 648 mock_socket_factory_.AddMockSocket(&data_socket1);
526 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file"); 649 FtpRequestInfo request_info = GetRequestInfo("ftp://host/file");
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 FtpMockControlSocketFileDownloadRetrFail ctrl_socket; 1032 FtpMockControlSocketFileDownloadRetrFail ctrl_socket;
910 TransactionFailHelper(&ctrl_socket, 1033 TransactionFailHelper(&ctrl_socket,
911 "ftp://host/file", 1034 "ftp://host/file",
912 FtpMockControlSocket::PRE_RETR, 1035 FtpMockControlSocket::PRE_RETR,
913 FtpMockControlSocket::PRE_CWD, 1036 FtpMockControlSocket::PRE_CWD,
914 "550 cannot open file\r\n", 1037 "550 cannot open file\r\n",
915 ERR_FILE_NOT_FOUND); 1038 ERR_FILE_NOT_FOUND);
916 } 1039 }
917 1040
918 } // namespace net 1041 } // namespace net
OLDNEW
« no previous file with comments | « net/ftp/ftp_network_transaction.cc ('k') | net/ftp/ftp_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698