commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rwins...@apache.org
Subject svn commit: r161506 - jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/parser/FTPConfigEntryParserTest.java
Date Fri, 15 Apr 2005 16:50:48 GMT
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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message