001: /**
002: *
003: * edtFTPj
004: *
005: * Copyright (C) 2000 Enterprise Distributed Technologies Ltd
006: *
007: * www.enterprisedt.com
008: *
009: * This library is free software; you can redistribute it and/or
010: * modify it under the terms of the GNU Lesser General Public
011: * License as published by the Free Software Foundation; either
012: * version 2.1 of the License, or (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017: * Lesser General Public License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
022: *
023: * Bug fixes, suggestions and comments should be should posted on
024: * http://www.enterprisedt.com/forums/index.php
025: *
026: * Change Log:
027: *
028: * $Log: TestListings.java,v $
029: * Revision 1.13 2007-12-18 07:55:50 bruceb
030: * add finally
031: *
032: * Revision 1.12 2007-08-09 00:10:52 hans
033: * Removed unused imports.
034: *
035: * Revision 1.11 2005/09/21 11:20:20 bruceb
036: * reply code 2
037: *
038: * Revision 1.10 2005/09/21 10:38:47 bruceb
039: * more debug
040: *
041: * Revision 1.9 2005/09/21 08:39:11 bruceb
042: * allow 450 as well as 550 for empty dir
043: *
044: * Revision 1.8 2005/07/22 10:20:09 bruceb
045: * cater for SSH tests
046: *
047: * Revision 1.7 2005/07/15 17:30:06 bruceb
048: * rework of unit testing structure
049: *
050: * Revision 1.6 2005/06/03 11:27:05 bruceb
051: * comment update
052: *
053: * Revision 1.5 2004/08/31 10:44:49 bruceb
054: * minor tweaks re compile warnings
055: *
056: * Revision 1.4 2004/05/01 17:05:43 bruceb
057: * Logger stuff added
058: *
059: * Revision 1.3 2004/04/17 18:38:38 bruceb
060: * tweaks for ssl and new parsing functionality
061: *
062: * Revision 1.2 2003/05/31 14:54:05 bruceb
063: * cleaned up unused imports
064: *
065: * Revision 1.1 2002/11/19 22:00:15 bruceb
066: * New JUnit test cases
067: *
068: *
069: */package com.enterprisedt.net.ftp.test;
070:
071: import junit.framework.Test;
072: import junit.framework.TestSuite;
073:
074: import com.enterprisedt.net.ftp.FTPException;
075: import com.enterprisedt.net.ftp.FTPFile;
076:
077: /**
078: * Tests the various commands that list directories
079: *
080: * @author Bruce Blackshaw
081: * @version $Revision: 1.13 $
082: */
083: public class TestListings extends FTPTestCase {
084:
085: /**
086: * Revision control id
087: */
088: public static String cvsId = "@(#)$Id: TestListings.java,v 1.13 2007-12-18 07:55:50 bruceb Exp $";
089:
090: /**
091: * Get name of log file
092: *
093: * @return name of file to log to
094: */
095: protected String getLogName() {
096: return "TestListings.log";
097: }
098:
099: /**
100: * Test directory listings
101: */
102: public void testDir() throws Exception {
103:
104: log.debug("testDir() - ENTRY");
105: try {
106:
107: connect();
108:
109: // move to test directory
110: ftp.chdir(testdir);
111:
112: // list current dir
113: String[] list = ftp.dir();
114: print(list);
115:
116: // list current dir by name
117: list = ftp.dir(".");
118: print(list);
119:
120: // list empty dir by name
121: log.debug("Testing for empty dir: " + remoteEmptyDir);
122: list = ftp.dir(remoteEmptyDir);
123: print(list);
124: log.debug("End testing for empty dir");
125:
126: // non-existent file
127: String randomName = generateRandomFilename();
128: try {
129: list = ftp.dir(randomName);
130: print(list);
131: } catch (FTPException ex) { // reply code 2 is SFTP
132: if (ex.getReplyCode() != 550
133: && ex.getReplyCode() != 450
134: && ex.getReplyCode() != 2)
135: fail("dir("
136: + randomName
137: + ") should throw 450/550 for non-existent dir");
138: }
139:
140: ftp.quit();
141: } finally {
142: log.debug("testDir() - EXIT");
143: if (ftp.connected()) {
144: ftp.quitImmediately();
145: }
146: }
147:
148: }
149:
150: /**
151: * Test full directory listings
152: */
153: public void testDirFull() throws Exception {
154:
155: log.debug("testDirFull() - ENTRY");
156:
157: try {
158:
159: connect();
160:
161: // move to test directory
162: ftp.chdir(testdir);
163:
164: // list current dir by name
165: String[] list = ftp.dir(".", true);
166: print(list);
167:
168: log.debug("******* dirDetails *******");
169: FTPFile[] files = ftp.dirDetails(".");
170: print(files);
171: log.debug("******* end dirDetails *******");
172:
173: // list empty dir by name
174: log.debug("Testing for empty dir: " + remoteEmptyDir);
175: list = ftp.dir(remoteEmptyDir, true);
176: print(list);
177: log.debug("End testing for empty dir");
178:
179: // non-existent file. Some FTP servers don't send
180: // a 450/450, but IIS does - so we catch it and
181: // confirm it is a 550
182: String randomName = generateRandomFilename();
183: log.debug("Testing for non-existent dir: " + randomName);
184: try {
185: list = ftp.dir(randomName, true);
186: print(list);
187: } catch (FTPException ex) { // reply code 2 is SFTP
188: if (ex.getReplyCode() != 550
189: && ex.getReplyCode() != 450
190: && ex.getReplyCode() != 2)
191: fail("dir("
192: + randomName
193: + ") should throw 450/550/2 for non-existent dir");
194: }
195:
196: ftp.quit();
197: } finally {
198: log.debug("testDirFull() - EXIT");
199: if (ftp.connected()) {
200: ftp.quitImmediately();
201: }
202: }
203:
204: }
205:
206: /**
207: * Automatic test suite construction
208: *
209: * @return suite of tests for this class
210: */
211: public static Test suite() {
212: return new TestSuite(TestListings.class);
213: }
214:
215: /**
216: * Enable our class to be run, doing the
217: * tests
218: */
219: public static void main(String[] args) {
220: junit.textui.TestRunner.run(suite());
221: }
222: }
|