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 * @author <a href="mailto:rwinston@apache.org">Rory Winston</a>
028 * @version $Id: NetwareFTPEntryParserTest.java 492109 2007-01-03 11:24:57Z rwinston $
029 */
030 public class NetwareFTPEntryParserTest extends FTPParseTestFramework {
031
032 private static final String[] badsamples = {
033 "a [-----F--] SCION_SYS 512 Apr 13 23:52 SYS",
034 "d [----AF--] 0 512 10-04-2001 _ADMIN"
035 };
036
037 private static final String [] goodsamples = {
038 "d [-----F--] SCION_SYS 512 Apr 13 23:52 SYS",
039 "d [----AF--] 0 512 Feb 22 17:32 _ADMIN",
040 "d [-W---F--] SCION_VOL2 512 Apr 13 23:12 VOL2",
041 "- [RWCEAFMS] rwinston 19968 Mar 12 15:20 Executive Summary.doc",
042 "d [RWCEAFMS] rwinston 512 Nov 24 2005 Favorites"
043 };
044
045 /**
046 * @see junit.framework.TestCase#TestCase(String)
047 */
048 public NetwareFTPEntryParserTest(String name) {
049 super(name);
050 }
051
052 /**
053 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getBadListing()
054 */
055 @Override
056 protected String[] getBadListing() {
057 return (badsamples);
058 }
059
060 /**
061 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getGoodListing()
062 */
063 @Override
064 protected String[] getGoodListing() {
065 return (goodsamples);
066 }
067
068 /**
069 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getParser()
070 */
071 @Override
072 protected FTPFileEntryParser getParser() {
073 return (new NetwareFTPEntryParser());
074 }
075
076 /**
077 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnDirectory()
078 */
079 @Override
080 public void testParseFieldsOnDirectory() throws Exception {
081 String reply = "d [-W---F--] testUser 512 Apr 13 23:12 testFile";
082 FTPFile f = getParser().parseFTPEntry(reply);
083
084 assertNotNull("Could not parse file", f);
085 assertEquals("testFile", f.getName());
086 assertEquals(512L, f.getSize());
087 assertEquals("testUser", f.getUser());
088 assertTrue("Directory flag is not set!", f.isDirectory());
089
090 Calendar cal = Calendar.getInstance();
091 cal.set(Calendar.MONTH, 3);
092 cal.set(Calendar.DAY_OF_MONTH, 13);
093 cal.set(Calendar.HOUR_OF_DAY, 23);
094 cal.set(Calendar.MINUTE, 12);
095 cal.set(Calendar.SECOND, 0);
096 cal.set(Calendar.MILLISECOND, 0);
097 cal.set(Calendar.YEAR, f.getTimestamp().get(Calendar.YEAR));
098
099 assertEquals(df.format(cal.getTime()), df.format(f.getTimestamp()
100 .getTime()));
101
102 }
103
104
105 /**
106 * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnFile()
107 */
108 @Override
109 public void testParseFieldsOnFile() throws Exception {
110 String reply = "- [R-CEAFMS] rwinston 19968 Mar 12 15:20 Document name with spaces.doc";
111
112 FTPFile f = getParser().parseFTPEntry(reply);
113
114 assertNotNull("Could not parse file", f);
115 assertEquals("Document name with spaces.doc", f.getName());
116 assertEquals(19968L, f.getSize());
117 assertEquals("rwinston", f.getUser());
118 assertTrue("File flag is not set!", f.isFile());
119
120 assertTrue(f.hasPermission(FTPFile.USER_ACCESS, FTPFile.READ_PERMISSION));
121 assertFalse(f.hasPermission(FTPFile.USER_ACCESS, FTPFile.WRITE_PERMISSION));
122 }
123
124
125 /**
126 * Method suite.
127 * @return TestSuite
128 */
129 public static TestSuite suite() {
130 return (new TestSuite(NetwareFTPEntryParserTest.class));
131 }
132
133
134 }