1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.net.ftp.parser;
18
19 import java.util.Calendar;
20
21 import org.apache.commons.net.ftp.FTPFile;
22 import org.apache.commons.net.ftp.FTPFileEntryParser;
23
24 public class MacOsPeterFTPEntryParserTest extends FTPParseTestFramework {
25
26 private static final String[] badsamples = {
27 "drwxr-xr-x 123 folder 0 Jan 4 14:49 Steak",
28 };
29
30 private static final String[] goodsamples =
31 {
32 "-rw-r--r-- 54149 27826 81975 Jul 22 2010 09.jpg",
33 "drwxr-xr-x folder 0 Jan 4 14:51 Alias_to_Steak",
34 "-rw-r--r-- 78440 49231 127671 Jul 22 2010 Filename with whitespace.jpg",
35 "-rw-r--r-- 78440 49231 127671 Jul 22 14:51 Filename with whitespace.jpg",
36 "-rw-r--r-- 0 108767 108767 Jul 22 2010 presentation03.jpg",
37 "-rw-r--r-- 58679 60393 119072 Jul 22 2010 presentation04.jpg",
38 "-rw-r--r-- 82543 51433 133976 Jul 22 2010 presentation06.jpg",
39 "-rw-r--r-- 83616 1430976 1514592 Jul 22 2010 presentation10.jpg",
40 "-rw-r--r-- 0 66990 66990 Jul 22 2010 presentation11.jpg",
41 "drwxr-xr-x folder 0 Jan 4 14:49 Steak",
42 "-rwx------ 0 12713 12713 Jul 8 2009 Twitter_Avatar.png",
43 };
44
45
46
47
48 public MacOsPeterFTPEntryParserTest(String name) {
49 super(name);
50 }
51
52
53
54
55 @Override
56 protected String[] getBadListing() {
57 return (badsamples);
58 }
59
60
61
62
63 @Override
64 protected String[] getGoodListing() {
65 return (goodsamples);
66 }
67
68 @Override
69 protected FTPFileEntryParser getParser() {
70 return (new MacOsPeterFTPEntryParser());
71 }
72
73 @Override
74 public void testParseFieldsOnDirectory() throws Exception {
75 FTPFile f = getParser().parseFTPEntry(
76 "drwxr-xr-x folder 0 Mar 2 15:13 Alias_to_Steak");
77 assertNotNull("Could not parse entry.", f);
78 assertTrue("Should have been a directory.", f.isDirectory());
79 checkPermissions(f);
80 assertEquals(0, f.getHardLinkCount());
81 assertNull(f.getUser());
82 assertNull(f.getGroup());
83 assertEquals(0, f.getSize());
84 assertEquals("Alias_to_Steak", f.getName());
85
86 Calendar cal = Calendar.getInstance();
87 cal.set(Calendar.MONTH, Calendar.MARCH);
88
89 cal.set(Calendar.DATE, 1);
90 cal.set(Calendar.HOUR_OF_DAY, 0);
91 cal.set(Calendar.MINUTE, 0);
92 cal.set(Calendar.SECOND, 0);
93 if (f.getTimestamp().getTime().before(cal.getTime())) {
94 cal.add(Calendar.YEAR, -1);
95 }
96 cal.set(Calendar.DATE, 2);
97 cal.set(Calendar.HOUR_OF_DAY, 15);
98 cal.set(Calendar.MINUTE, 13);
99
100 assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp()
101 .getTime()));
102 }
103
104 @Override
105 public void testParseFieldsOnFile() throws Exception {
106 FTPFile f = getParser().parseFTPEntry(
107 "-rwxr-xr-x 78440 49231 127671 Jul 2 14:51 Filename with whitespace.jpg"
108 );
109 assertNotNull("Could not parse entry.", f);
110 assertTrue("Should have been a file.", f.isFile());
111 checkPermissions(f);
112 assertEquals(0, f.getHardLinkCount());
113 assertNull(f.getUser());
114 assertNull(f.getGroup());
115 assertEquals("Filename with whitespace.jpg", f.getName());
116 assertEquals(127671L, f.getSize());
117
118 Calendar cal = Calendar.getInstance();
119 cal.set(Calendar.MONTH, Calendar.JULY);
120
121 cal.set(Calendar.DATE, 1);
122 cal.set(Calendar.HOUR_OF_DAY, 0);
123 cal.set(Calendar.MINUTE, 0);
124 cal.set(Calendar.SECOND, 0);
125 if (f.getTimestamp().getTime().before(cal.getTime())) {
126 cal.add(Calendar.YEAR, -1);
127 }
128 cal.set(Calendar.DATE, 2);
129 cal.set(Calendar.HOUR_OF_DAY, 14);
130 cal.set(Calendar.MINUTE, 51);
131 assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp().getTime()));
132 }
133
134
135
136
137
138
139 private void checkPermissions(FTPFile f) {
140 assertTrue("Should have user read permission.", f.hasPermission(
141 FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION));
142 assertTrue("Should have user write permission.", f.hasPermission(
143 FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION));
144 assertTrue("Should have user execute permission.", f.hasPermission(
145 FTPFile.USER_ACCESS, FTPFile.EXECUTE_PERMISSION));
146 assertTrue("Should have group read permission.", f.hasPermission(
147 FTPFile.GROUP_ACCESS, FTPFile.READ_PERMISSION));
148 assertTrue("Should NOT have group write permission.", !f.hasPermission(
149 FTPFile.GROUP_ACCESS, FTPFile.WRITE_PERMISSION));
150 assertTrue("Should have group execute permission.", f.hasPermission(
151 FTPFile.GROUP_ACCESS, FTPFile.EXECUTE_PERMISSION));
152 assertTrue("Should have world read permission.", f.hasPermission(
153 FTPFile.WORLD_ACCESS, FTPFile.READ_PERMISSION));
154 assertTrue("Should NOT have world write permission.", !f.hasPermission(
155 FTPFile.WORLD_ACCESS, FTPFile.WRITE_PERMISSION));
156 assertTrue("Should have world execute permission.", f.hasPermission(
157 FTPFile.WORLD_ACCESS, FTPFile.EXECUTE_PERMISSION));
158 }
159
160 }