001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.commons.net.ftp.parser; 018 019 import java.util.Calendar; 020 021 import junit.framework.TestSuite; 022 023 import org.apache.commons.net.ftp.FTPFile; 024 import org.apache.commons.net.ftp.FTPFileEntryParser; 025 026 /** 027 * Tests the EnterpriseUnixFTPEntryParser 028 * 029 * @version $Id: EnterpriseUnixFTPEntryParserTest.java 437134 2006-08-26 09:36:36Z rwinston $ 030 * @author <a href="mailto:Winston.Ojeda@qg.com">Winston Ojeda</a> 031 */ 032 public class EnterpriseUnixFTPEntryParserTest extends FTPParseTestFramework 033 { 034 035 private static final String[] BADSAMPLES = 036 { 037 "zrwxr-xr-x 2 root root 4096 Mar 2 15:13 zxbox", 038 "dxrwr-xr-x 2 root root 4096 Aug 24 2001 zxjdbc", 039 "drwxr-xr-x 2 root root 4096 Jam 4 00:03 zziplib", 040 "drwxr-xr-x 2 root 99 4096 Feb 23 30:01 zzplayer", 041 "drwxr-xr-x 2 root root 4096 Aug 36 2001 zztpp", 042 "-rw-r--r-- 1 14 staff 80284 Aug 22 zxJDBC-1.2.3.tar.gz", 043 "-rw-r--r-- 1 14 staff 119:26 Aug 22 2000 zxJDBC-1.2.3.zip", 044 "-rw-r--r-- 1 ftp no group 83853 Jan 22 2001 zxJDBC-1.2.4.tar.gz", 045 "-rw-r--r-- 1ftp nogroup 126552 Jan 22 2001 zxJDBC-1.2.4.zip", 046 "-rw-r--r-- 1 root root 111325 Apr -7 18:79 zxJDBC-2.0.1b1.tar.gz", 047 "drwxr-xr-x 2 root root 4096 Mar 2 15:13 zxbox", 048 "drwxr-xr-x 1 usernameftp 512 Jan 29 23:32 prog", 049 "drwxr-xr-x 2 root root 4096 Aug 24 2001 zxjdbc", 050 "drwxr-xr-x 2 root root 4096 Jan 4 00:03 zziplib", 051 "drwxr-xr-x 2 root 99 4096 Feb 23 2001 zzplayer", 052 "drwxr-xr-x 2 root root 4096 Aug 6 2001 zztpp", 053 "-rw-r--r-- 1 14 staff 80284 Aug 22 2000 zxJDBC-1.2.3.tar.gz", 054 "-rw-r--r-- 1 14 staff 119926 Aug 22 2000 zxJDBC-1.2.3.zip", 055 "-rw-r--r-- 1 ftp nogroup 83853 Jan 22 2001 zxJDBC-1.2.4.tar.gz", 056 "-rw-r--r-- 1 ftp nogroup 126552 Jan 22 2001 zxJDBC-1.2.4.zip", 057 "-rw-r--r-- 1 root root 111325 Apr 27 2001 zxJDBC-2.0.1b1.tar.gz", 058 "-rw-r--r-- 1 root root 190144 Apr 27 2001 zxJDBC-2.0.1b1.zip" 059 }; 060 private static final String[] GOODSAMPLES = 061 { 062 "-C--E-----FTP B QUA1I1 18128 41 Aug 12 13:56 QUADTEST", 063 "-C--E-----FTP A QUA1I1 18128 41 Aug 12 13:56 QUADTEST2" 064 }; 065 066 /** 067 * Creates a new EnterpriseUnixFTPEntryParserTest object. 068 * 069 * @param name Test name. 070 */ 071 public EnterpriseUnixFTPEntryParserTest(String name) 072 { 073 super(name); 074 } 075 076 /** 077 * Method suite. 078 * 079 * @return TestSuite 080 */ 081 public static TestSuite suite() 082 { 083 084 return (new TestSuite(EnterpriseUnixFTPEntryParserTest.class)); 085 } 086 087 /** 088 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnDirectory() 089 */ 090 @Override 091 public void testParseFieldsOnDirectory() throws Exception 092 { 093 // Everything is a File for now. 094 } 095 096 /** 097 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnFile() 098 */ 099 @Override 100 public void testParseFieldsOnFile() throws Exception 101 { 102 FTPFile file = getParser().parseFTPEntry("-C--E-----FTP B QUA1I1 18128 5000000000 Aug 12 13:56 QUADTEST"); 103 Calendar today = Calendar.getInstance(); 104 int year = today.get(Calendar.YEAR); 105 106 assertTrue("Should be a file.", 107 file.isFile()); 108 assertEquals("QUADTEST", 109 file.getName()); 110 assertEquals(5000000000L, 111 file.getSize()); 112 assertEquals("QUA1I1", 113 file.getUser()); 114 assertEquals("18128", 115 file.getGroup()); 116 117 if(today.get(Calendar.MONTH) < Calendar.AUGUST) 118 --year; 119 120 Calendar timestamp = file.getTimestamp(); 121 assertEquals(year, timestamp.get(Calendar.YEAR)); 122 assertEquals(Calendar.AUGUST, timestamp.get(Calendar.MONTH)); 123 assertEquals(12, timestamp.get(Calendar.DAY_OF_MONTH)); 124 assertEquals(13, timestamp.get(Calendar.HOUR_OF_DAY)); 125 assertEquals(56, timestamp.get(Calendar.MINUTE)); 126 assertEquals(0, timestamp.get(Calendar.SECOND)); 127 128 checkPermisions(file); 129 } 130 131 /** 132 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getBadListing() 133 */ 134 @Override 135 protected String[] getBadListing() 136 { 137 138 return (BADSAMPLES); 139 } 140 141 /** 142 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getGoodListing() 143 */ 144 @Override 145 protected String[] getGoodListing() 146 { 147 148 return (GOODSAMPLES); 149 } 150 151 /** 152 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getParser() 153 */ 154 @Override 155 protected FTPFileEntryParser getParser() 156 { 157 158 return (new EnterpriseUnixFTPEntryParser()); 159 } 160 161 /** 162 * Method checkPermisions. Verify that the parser does NOT set the 163 * permissions. 164 * 165 * @param dir 166 */ 167 private void checkPermisions(FTPFile dir) 168 { 169 assertTrue("Owner should not have read permission.", 170 !dir.hasPermission(FTPFile.USER_ACCESS, 171 FTPFile.READ_PERMISSION)); 172 assertTrue("Owner should not have write permission.", 173 !dir.hasPermission(FTPFile.USER_ACCESS, 174 FTPFile.WRITE_PERMISSION)); 175 assertTrue("Owner should not have execute permission.", 176 !dir.hasPermission(FTPFile.USER_ACCESS, 177 FTPFile.EXECUTE_PERMISSION)); 178 assertTrue("Group should not have read permission.", 179 !dir.hasPermission(FTPFile.GROUP_ACCESS, 180 FTPFile.READ_PERMISSION)); 181 assertTrue("Group should not have write permission.", 182 !dir.hasPermission(FTPFile.GROUP_ACCESS, 183 FTPFile.WRITE_PERMISSION)); 184 assertTrue("Group should not have execute permission.", 185 !dir.hasPermission(FTPFile.GROUP_ACCESS, 186 FTPFile.EXECUTE_PERMISSION)); 187 assertTrue("World should not have read permission.", 188 !dir.hasPermission(FTPFile.WORLD_ACCESS, 189 FTPFile.READ_PERMISSION)); 190 assertTrue("World should not have write permission.", 191 !dir.hasPermission(FTPFile.WORLD_ACCESS, 192 FTPFile.WRITE_PERMISSION)); 193 assertTrue("World should not have execute permission.", 194 !dir.hasPermission(FTPFile.WORLD_ACCESS, 195 FTPFile.EXECUTE_PERMISSION)); 196 } 197 } 198 199 /* Emacs configuration 200 * Local variables: ** 201 * mode: java ** 202 * c-basic-offset: 4 ** 203 * indent-tabs-mode: nil ** 204 * End: ** 205 */