1 16 package org.apache.commons.net.ftp.parser; 17 18 import java.io.ByteArrayInputStream ; 19 import java.io.IOException ; 20 21 import junit.framework.TestSuite; 22 23 import org.apache.commons.net.ftp.FTPFile; 24 import org.apache.commons.net.ftp.FTPFileEntryParser; 25 import org.apache.commons.net.ftp.FTPListParseEngine; 26 27 32 public class VMSFTPEntryParserTest extends FTPParseTestFramework 33 { 34 private static final String [] badsamples = 35 { 36 37 "1-JUN.LIS;2 9/9 JUN-2-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)", 38 "1-JUN.LIS;2 a/9 2-JUN-98 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)", 39 "DATA.DIR; 1 1/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (,RWED,RWED,RE)", 40 "120196.TXT;1 118/126 14-APR-1997 12:45:27 PM [GROUP,OWNER] (RWED,,RWED,RE)", 41 "30CHARBAR.TXT;1 11/18 2-JUN-1998 08:38:42 [GROUP-1,OWNER] (RWED,RWED,RWED,RE)", 42 "A.;2 18/18 1-JUL-1998 08:43:20 [GROUP,OWNER] (RWED2,RWED,RWED,RE)", 43 "AA.;2 152/153 13-FED-1997 08:13:43 [GROUP,OWNER] (RWED,RWED,RWED,RE)", 44 "Directory USER1:[TEMP]\r\n\r\n", 45 "\r\nTotal 14 files" 46 }; 47 48 private static final String [] goodsamples = 49 { 50 "1-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)", 51 "1-JUN.LIS;3 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)", 52 "1-JUN.LIS;2 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)", 53 "DATA.DIR;1 1/9 2-JUN-1998 07:32:04 [TRANSLATED] (,RWED,RWED,RE)", 54 "120196.TXT;1 118/126 14-APR-1997 12:45:27 [GROUP,OWNER] (RWED,,RWED,RE)", 55 "30CHARBAR.TXT;1 11/18 2-JUN-1998 08:38:42 [GROUP,OWNER] (RWED,RWED,RWED,RE)", 56 "A.;2 18/18 1-JUL-1998 08:43:20 [GROUP,OWNER] (RWED,RWED,RWED,RE)", 57 "AA.;2 152/153 13-FEB-1997 08:13:43 [GROUP,OWNER] (RWED,RWED,RWED,RE)", 58 "UCX$REXECD_STARTUP.LOG;1098\r\n 4/15 24-FEB-2003 13:17:24 [POSTWARE,LP] (RWED,RWED,RE,)", 59 "UNARCHIVE.COM;1 2/15 7-JUL-1997 16:37:45 [POSTWARE,LP] (RWE,RWE,RWE,RE)", 60 "UNXMERGE.COM;15 1/15 20-AUG-1996 13:59:50 [POSTWARE,LP] (RWE,RWE,RWE,RE)", 61 "UNXTEMP.COM;7 1/15 15-AUG-1996 14:10:38 [POSTWARE,LP] (RWE,RWE,RWE,RE)", 62 "UNZIP_AND_ATTACH_FILES.COM;12\r\n 14/15 24-JUL-2002 14:35:40 [TRANSLATED] (RWE,RWE,RWE,RE)", 63 "UNZIP_AND_ATTACH_FILES.SAV;1\r\n 14/15 17-JAN-2002 11:13:53 [POSTWARE,LP] (RWE,RWED,RWE,RE)", 64 "FREEWARE40.DIR;1 27/36 16-FEB-1999 10:01:46 [AP_HTTPD,APACHE$WWW (RWE,RWE,RE,RE)", 65 "1-JUN.LIS;1 9/9 2-jun-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)", 66 }; 67 68 private static final String fullListing = "Directory USER1:[TEMP]\r\n\r\n"+ 69 "1-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)\r\n"+ 70 "2-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)\r\n"+ 71 "3-JUN.LIS;1 9/9 3-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)\r\n"+ 72 "3-JUN.LIS;4 9/9 7-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)\r\n"+ 73 "3-JUN.LIS;2 9/9 4-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)\r\n"+ 74 "3-JUN.LIS;3 9/9 6-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,)\r\n"+ 75 "\r\nTotal 6 files"; 76 77 80 public VMSFTPEntryParserTest(String name) 81 { 82 super(name); 83 } 84 85 89 public void testWholeListParse() throws IOException 90 { 91 VMSFTPEntryParser parser = new VMSFTPEntryParser(); 92 parser.configure(null); 93 FTPListParseEngine engine = new FTPListParseEngine(parser); 94 engine.readServerList( 95 new ByteArrayInputStream (fullListing.getBytes())); 96 FTPFile[] files = engine.getFiles(); 97 assertEquals(6, files.length); 98 assertFileInListing(files, "2-JUN.LIS"); 99 assertFileInListing(files, "3-JUN.LIS"); 100 assertFileInListing(files, "1-JUN.LIS"); 101 assertFileNotInListing(files, "1-JUN.LIS;1"); 102 103 } 104 105 109 public void testWholeListParseWithVersioning() throws IOException 110 { 111 112 VMSFTPEntryParser parser = new VMSVersioningFTPEntryParser(); 113 parser.configure(null); 114 FTPListParseEngine engine = new FTPListParseEngine(parser); 115 engine.readServerList( 116 new ByteArrayInputStream (fullListing.getBytes())); 117 FTPFile[] files = engine.getFiles(); 118 assertEquals(3, files.length); 119 assertFileInListing(files, "1-JUN.LIS;1"); 120 assertFileInListing(files, "2-JUN.LIS;1"); 121 assertFileInListing(files, "3-JUN.LIS;4"); 122 assertFileNotInListing(files, "3-JUN.LIS;1"); 123 assertFileNotInListing(files, "3-JUN.LIS"); 124 125 } 126 127 public void assertFileInListing(FTPFile[] listing, String name) { 128 for (int i = 0; i < listing.length; i++) { 129 if (name.equals(listing[i].getName())) { 130 return; 131 } 132 } 133 fail("File " + name + " not found in supplied listing"); 134 } 135 public void assertFileNotInListing(FTPFile[] listing, String name) { 136 for (int i = 0; i < listing.length; i++) { 137 if (name.equals(listing[i].getName())) { 138 fail("Unexpected File " + name + " found in supplied listing"); 139 } 140 } 141 } 142 143 146 public void testParseFieldsOnDirectory() throws Exception 147 { 148 149 FTPFile dir = getParser().parseFTPEntry("DATA.DIR;1 1/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)"); 150 assertTrue("Should be a directory.", 151 dir.isDirectory()); 152 assertEquals("DATA.DIR", 153 dir.getName()); 154 assertEquals(512, 155 dir.getSize()); 156 assertEquals("Tue Jun 02 07:32:04 1998", 157 df.format(dir.getTimestamp().getTime())); 158 assertEquals("GROUP", 159 dir.getGroup()); 160 assertEquals("OWNER", 161 dir.getUser()); 162 checkPermisions(dir); 163 164 165 dir = getParser().parseFTPEntry("DATA.DIR;1 1/9 2-JUN-1998 07:32:04 [TRANSLATED] (RWED,RWED,RWED,RE)"); 166 assertTrue("Should be a directory.", 167 dir.isDirectory()); 168 assertEquals("DATA.DIR", 169 dir.getName()); 170 assertEquals(512, 171 dir.getSize()); 172 assertEquals("Tue Jun 02 07:32:04 1998", 173 df.format(dir.getTimestamp().getTime())); 174 assertEquals(null, 175 dir.getGroup()); 176 assertEquals("TRANSLATED", 177 dir.getUser()); 178 checkPermisions(dir); 179 } 180 181 184 public void testParseFieldsOnFile() throws Exception 185 { 186 FTPFile file = getParser().parseFTPEntry("1-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [GROUP,OWNER] (RWED,RWED,RWED,RE)"); 187 assertTrue("Should be a file.", 188 file.isFile()); 189 assertEquals("1-JUN.LIS", 190 file.getName()); 191 assertEquals(9 * 512, 192 file.getSize()); 193 assertEquals("Tue Jun 02 07:32:04 1998", 194 df.format(file.getTimestamp().getTime())); 195 assertEquals("GROUP", 196 file.getGroup()); 197 assertEquals("OWNER", 198 file.getUser()); 199 checkPermisions(file); 200 201 202 file = getParser().parseFTPEntry("1-JUN.LIS;1 9/9 2-JUN-1998 07:32:04 [TRANSLATED] (RWED,RWED,RWED,RE)"); 203 assertTrue("Should be a file.", 204 file.isFile()); 205 assertEquals("1-JUN.LIS", 206 file.getName()); 207 assertEquals(9 * 512, 208 file.getSize()); 209 assertEquals("Tue Jun 02 07:32:04 1998", 210 df.format(file.getTimestamp().getTime())); 211 assertEquals(null, 212 file.getGroup()); 213 assertEquals("TRANSLATED", 214 file.getUser()); 215 checkPermisions(file); 216 } 217 218 221 protected String [] getBadListing() 222 { 223 224 return (badsamples); 225 } 226 227 230 protected String [] getGoodListing() 231 { 232 233 return (goodsamples); 234 } 235 236 239 protected FTPFileEntryParser getParser() 240 { 241 ConfigurableFTPFileEntryParserImpl parser = 242 new VMSFTPEntryParser(); 243 parser.configure(null); 244 return parser; 245 } 246 protected FTPFileEntryParser getVersioningParser() 247 { 248 ConfigurableFTPFileEntryParserImpl parser = 249 new VMSVersioningFTPEntryParser(); 250 parser.configure(null); 251 return parser; 252 } 253 254 259 private void checkPermisions(FTPFile dir) 260 { 261 assertTrue("Owner should not have read permission.", 262 !dir.hasPermission(FTPFile.USER_ACCESS, 263 FTPFile.READ_PERMISSION)); 264 assertTrue("Owner should not have write permission.", 265 !dir.hasPermission(FTPFile.USER_ACCESS, 266 FTPFile.WRITE_PERMISSION)); 267 assertTrue("Owner should not have execute permission.", 268 !dir.hasPermission(FTPFile.USER_ACCESS, 269 FTPFile.EXECUTE_PERMISSION)); 270 assertTrue("Group should not have read permission.", 271 !dir.hasPermission(FTPFile.GROUP_ACCESS, 272 FTPFile.READ_PERMISSION)); 273 assertTrue("Group should not have write permission.", 274 !dir.hasPermission(FTPFile.GROUP_ACCESS, 275 FTPFile.WRITE_PERMISSION)); 276 assertTrue("Group should not have execute permission.", 277 !dir.hasPermission(FTPFile.GROUP_ACCESS, 278 FTPFile.EXECUTE_PERMISSION)); 279 assertTrue("World should not have read permission.", 280 !dir.hasPermission(FTPFile.WORLD_ACCESS, 281 FTPFile.READ_PERMISSION)); 282 assertTrue("World should not have write permission.", 283 !dir.hasPermission(FTPFile.WORLD_ACCESS, 284 FTPFile.WRITE_PERMISSION)); 285 assertTrue("World should not have execute permission.", 286 !dir.hasPermission(FTPFile.WORLD_ACCESS, 287 FTPFile.EXECUTE_PERMISSION)); 288 } 289 290 294 public static TestSuite suite() 295 { 296 return(new TestSuite(VMSFTPEntryParserTest.class)); 297 } 298 } 299 | Popular Tags |