KickJava   Java API By Example, From Geeks To Geeks.

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


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.text.SimpleDateFormat JavaDoc;
19 import java.util.Calendar JavaDoc;
20 import java.util.Date JavaDoc;
21
22 import junit.framework.TestCase;
23
24 import org.apache.commons.net.ftp.FTPClientConfig;
25 import org.apache.commons.net.ftp.FTPFile;
26
27 /**
28  * This is a simple TestCase that tests entry parsing using the new FTPClientConfig
29  * mechanism. The normal FTPClient cannot handle the different date formats in these
30  * entries, however using a configurable format, we can handle it easily.
31  *
32  * The original system presenting this issue was an AIX system - see bug #27437 for details.
33  *
34  * @version $Id$
35  */

36 public class FTPConfigEntryParserTest extends TestCase {
37     
38     private SimpleDateFormat JavaDoc df = new SimpleDateFormat JavaDoc();
39
40     public void testParseFieldsOnAIX() {
41         
42         // Set a date format for this server type
43
FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
44         config.setDefaultDateFormatStr("dd MMM HH:mm");
45
46         UnixFTPEntryParser parser = new UnixFTPEntryParser();
47         parser.configure(config);
48
49         FTPFile f = parser.parseFTPEntry("-rw-r----- 1 ravensm sca 814 02 Mar 16:27 ZMIR2.m");
50
51         assertNotNull("Could not parse entry.", f);
52         assertFalse("Is not a directory.", f.isDirectory());
53
54         assertTrue("Should have user read permission.", f.hasPermission(
55                 FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION));
56         assertTrue("Should have user write permission.", f.hasPermission(
57                 FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION));
58         assertFalse("Should NOT have user execute permission.", f
59                 .hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION));
60         assertTrue("Should have group read permission.", f.hasPermission(
61                 FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION));
62         assertFalse("Should NOT have group write permission.", f
63                 .hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION));
64         assertFalse("Should NOT have group execute permission.",
65                 f.hasPermission(FTPFile.GROUP_ACCESS,
66                         FTPFile.EXECUTE_PERMISSION));
67         assertFalse("Should NOT have world read permission.", f.hasPermission(
68                 FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION));
69         assertFalse("Should NOT have world write permission.", f
70                 .hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION));
71         assertFalse("Should NOT have world execute permission.",
72                 f.hasPermission(FTPFile.WORLD_ACCESS,
73                         FTPFile.EXECUTE_PERMISSION));
74
75         assertEquals(1, f.getHardLinkCount());
76
77         assertEquals("ravensm", f.getUser());
78         assertEquals("sca", f.getGroup());
79
80         assertEquals("ZMIR2.m", f.getName());
81         assertEquals(814, f.getSize());
82
83         Calendar JavaDoc cal = Calendar.getInstance();
84         
85         Date JavaDoc refDate = new Date JavaDoc();
86         
87         cal.set(Calendar.MONTH, Calendar.MARCH);
88         cal.set(Calendar.DATE, 2);
89         cal.set(Calendar.HOUR_OF_DAY, 16);
90         cal.set(Calendar.MINUTE, 27);
91         cal.set(Calendar.SECOND, 0);
92         
93         // With no year specified, it defaults to 1970
94
// TODO this is probably a bug - it should default to the current year
95
cal.set(Calendar.YEAR, 1970);
96         
97         assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp()
98                 .getTime()));
99     }
100     
101     /**
102      * This is a new format reported on the mailing lists. Parsing this kind of
103      * entry necessitated changing the regex in the parser.
104      *
105      */

106     public void testParseEntryWithSymlink() {
107         
108         FTPClientConfig config = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
109         config.setDefaultDateFormatStr("yyyy-MM-dd HH:mm");
110
111         UnixFTPEntryParser parser = new UnixFTPEntryParser();
112         parser.configure(config);
113
114         FTPFile f = parser.parseFTPEntry("lrwxrwxrwx 1 neeme neeme 23 2005-03-02 18:06 macros");
115
116         assertNotNull("Could not parse entry.", f);
117         assertFalse("Is not a directory.", f.isDirectory());
118         assertTrue("Is a symbolic link", f.isSymbolicLink());
119
120         assertTrue("Should have user read permission.", f.hasPermission(
121                 FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION));
122         assertTrue("Should have user write permission.", f.hasPermission(
123                 FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION));
124         assertTrue("Should have user execute permission.", f
125                 .hasPermission(FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION));
126         assertTrue("Should have group read permission.", f.hasPermission(
127                 FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION));
128         assertTrue("Should have group write permission.", f
129                 .hasPermission(FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION));
130         assertTrue("Should have group execute permission.",
131                 f.hasPermission(FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION));
132         assertTrue("Should have world read permission.", f.hasPermission(
133                 FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION));
134         assertTrue("Should have world write permission.", f
135                 .hasPermission(FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION));
136         assertTrue("Should have world execute permission.",
137                 f.hasPermission(FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION));
138
139         assertEquals(1, f.getHardLinkCount());
140
141         assertEquals("neeme", f.getUser());
142         assertEquals("neeme", f.getGroup());
143
144         assertEquals("macros", f.getName());
145         assertEquals(23, f.getSize());
146
147         Calendar JavaDoc cal = Calendar.getInstance();
148         
149         Date JavaDoc refDate = new Date JavaDoc();
150         
151         cal.set(Calendar.MONTH, Calendar.MARCH);
152         cal.set(Calendar.DATE, 2);
153         cal.set(Calendar.HOUR_OF_DAY, 18);
154         cal.set(Calendar.MINUTE, 06);
155         cal.set(Calendar.SECOND, 0);
156         cal.set(Calendar.YEAR, 2005);
157             
158         assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp()
159                 .getTime()));
160         
161     }
162
163 }
164
Popular Tags