Author: rwinston Date: Fri Apr 15 09:50:48 2005 New Revision: 161506 URL: http://svn.apache.org/viewcvs?view=rev&rev=161506 Log: Added to repository
Added: jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/FTPConfigEntryParserTest.java Added: jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/FTPConfigEntryParserTest.java URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/FTPConfigEntryParserTest.java?view=auto&rev=161506 ============================================================================== --- jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/FTPConfigEntryParserTest.java (added) +++ jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/FTPConfigEntryParserTest.java Fri Apr 15 09:50:48 2005 @@ -0,0 +1,148 @@ +package org.apache.commons.net.ftp.parser; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +import junit.framework.TestCase; + +import org.apache.commons.net.ftp.FTPClientConfig; +import org.apache.commons.net.ftp.FTPFile; + +/** + * This is a simple TestCase that tests entry parsing using the new FTPClientConfig + * mechanism. The normal FTPClient cannot handle the different date format in these + * entries, however using a configurable format, we can handle it easily. + * + * The original system presenting this issue was an AIX system - see bug #27437 for details. + * + * $Id$ + */ +public class FTPConfigEntryParserTest extends TestCase { + + private SimpleDateFormat df = new SimpleDateFormat(); + + public void testParseFieldsOnAIX() { + + // Set a date format for this server type + FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_UNIX); + config.setDefaultDateFormatStr("dd MMM HH:mm"); + + UnixFTPEntryParser parser = new UnixFTPEntryParser(); + parser.configure(config); + + FTPFile f = parser.parseFTPEntry("-rw-r----- 1 ravensm sca 814 02 Mar 16:27 ZMIR2.m"); + + assertNotNull("Could not parse entry.", f); + assertFalse("Is not a directory.", f.isDirectory()); + + assertTrue("Should have user read permission.", f.hasPermission( + FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION)); + assertTrue("Should have user write permission.", f.hasPermission( + FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION)); + assertFalse("Should NOT have user execute permission.", f + .hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION)); + assertTrue("Should have group read permission.", f.hasPermission( + FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION)); + assertFalse("Should NOT have group write permission.", f + .hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION)); + assertFalse("Should NOT have group execute permission.", + f.hasPermission(FTPFile.GROUP_ACCESS, + FTPFile.EXECUTE_PERMISSION)); + assertFalse("Should NOT have world read permission.", f.hasPermission( + FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION)); + assertFalse("Should NOT have world write permission.", f + .hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION)); + assertFalse("Should NOT have world execute permission.", + f.hasPermission(FTPFile.WORLD_ACCESS, + FTPFile.EXECUTE_PERMISSION)); + + assertEquals(1, f.getHardLinkCount()); + + assertEquals("ravensm", f.getUser()); + assertEquals("sca", f.getGroup()); + + assertEquals("ZMIR2.m", f.getName()); + assertEquals(814, f.getSize()); + + Calendar cal = Calendar.getInstance(); + + Date refDate = new Date(); + + cal.set(Calendar.MONTH, Calendar.MARCH); + cal.set(Calendar.DATE, 2); + cal.set(Calendar.HOUR_OF_DAY, 16); + cal.set(Calendar.MINUTE, 27); + cal.set(Calendar.SECOND, 0); + + // With no year specified, it defaults to 1970 + // TODO this is a bug - it should default to the current year + cal.set(Calendar.YEAR, 1970); + + assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp() + .getTime())); + } + + /** + * This is a new format reported on the mailing lists. Parsing this kind of + * entry necessitated changing the regex in the parser. + * + */ + public void testParseEntryWithSymlink() { + + FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_UNIX); + config.setDefaultDateFormatStr("yyyy-MM-dd HH:mm"); + + UnixFTPEntryParser parser = new UnixFTPEntryParser(); + parser.configure(config); + + FTPFile f = parser.parseFTPEntry("lrwxrwxrwx 1 neeme neeme 23 2005-03-02 18:06 macros"); + + assertNotNull("Could not parse entry.", f); + assertFalse("Is not a directory.", f.isDirectory()); + assertTrue("Is a symbolic link", f.isSymbolicLink()); + + assertTrue("Should have user read permission.", f.hasPermission( + FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION)); + assertTrue("Should have user write permission.", f.hasPermission( + FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION)); + assertTrue("Should have user execute permission.", f + .hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION)); + assertTrue("Should have group read permission.", f.hasPermission( + FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION)); + assertTrue("Should have group write permission.", f + .hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION)); + assertTrue("Should have group execute permission.", + f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION)); + assertTrue("Should have world read permission.", f.hasPermission( + FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION)); + assertTrue("Should have world write permission.", f + .hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION)); + assertTrue("Should have world execute permission.", + f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION)); + + assertEquals(1, f.getHardLinkCount()); + + assertEquals("neeme", f.getUser()); + assertEquals("neeme", f.getGroup()); + + assertEquals("macros", f.getName()); + assertEquals(23, f.getSize()); + + Calendar cal = Calendar.getInstance(); + + Date refDate = new Date(); + + cal.set(Calendar.MONTH, Calendar.MARCH); + cal.set(Calendar.DATE, 2); + cal.set(Calendar.HOUR_OF_DAY, 18); + cal.set(Calendar.MINUTE, 06); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.YEAR, 2005); + + assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp() + .getTime())); + + } + +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]