KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > net > ftp > parser > VMSFTPEntryParserTest


1 /*
2  * Copyright 2001-2005 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16 package org.apache.commons.net.ftp.parser;
17
18 import java.io.ByteArrayInputStream JavaDoc;
19 import java.io.IOException JavaDoc;
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 /**
28  * @author <a HREF="mailto:scohen@apache.org">Steve Cohen</a>
29  * @author <a HREF="sestegra@free.fr">Stephane ESTE-GRACIAS</a>
30  * @version $Id: VMSFTPEntryParserTest.java 155429 2005-02-26 13:13:04Z dirkv $
31  */

32 public class VMSFTPEntryParserTest extends FTPParseTestFramework
33 {
34     private static final String JavaDoc[] 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 JavaDoc[] 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 JavaDoc 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     /**
78      * @see junit.framework.TestCase#TestCase(String)
79      */

80     public VMSFTPEntryParserTest(String JavaDoc name)
81     {
82         super(name);
83     }
84
85     /**
86      * Test the parsing of the whole list.
87      * @throws IOException
88      */

89     public void testWholeListParse() throws IOException JavaDoc
90     {
91         VMSFTPEntryParser parser = new VMSFTPEntryParser();
92         parser.configure(null);
93         FTPListParseEngine engine = new FTPListParseEngine(parser);
94         engine.readServerList(
95                 new ByteArrayInputStream JavaDoc(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     /**
106      * Test the parsing of the whole list.
107      * @throws IOException
108      */

109     public void testWholeListParseWithVersioning() throws IOException JavaDoc
110     {
111
112         VMSFTPEntryParser parser = new VMSVersioningFTPEntryParser();
113         parser.configure(null);
114         FTPListParseEngine engine = new FTPListParseEngine(parser);
115         engine.readServerList(
116                 new ByteArrayInputStream JavaDoc(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 JavaDoc 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 JavaDoc 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     /**
144      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnDirectory()
145      */

146     public void testParseFieldsOnDirectory() throws Exception JavaDoc
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     /**
182      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnFile()
183      */

184     public void testParseFieldsOnFile() throws Exception JavaDoc
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     /**
219      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getBadListing()
220      */

221     protected String JavaDoc[] getBadListing()
222     {
223
224         return (badsamples);
225     }
226
227     /**
228      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getGoodListing()
229      */

230     protected String JavaDoc[] getGoodListing()
231     {
232
233         return (goodsamples);
234     }
235
236     /**
237      * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getParser()
238      */

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     /**
255      * Method checkPermisions.
256      * Verify that the VMS parser does NOT set the permissions.
257      * @param dir
258      */

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     /**
291      * Method suite.
292      * @return TestSuite
293      */

294     public static TestSuite suite()
295     {
296         return(new TestSuite(VMSFTPEntryParserTest.class));
297     }
298 }
299
Popular Tags