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 import junit.framework.TestCase; 019 020 import org.apache.commons.net.ftp.FTPFileEntryParser; 021 022 023 public class DefaultFTPFileEntryParserFactoryTest extends TestCase 024 { 025 public void testDefaultParserFactory() throws Exception { 026 DefaultFTPFileEntryParserFactory factory = 027 new DefaultFTPFileEntryParserFactory(); 028 029 FTPFileEntryParser parser = factory.createFileEntryParser("unix"); 030 assertTrue(parser instanceof UnixFTPEntryParser); 031 032 parser = factory.createFileEntryParser("UNIX"); 033 assertTrue(parser instanceof UnixFTPEntryParser); 034 035 parser = factory.createFileEntryParser("Unix"); 036 assertTrue(parser instanceof UnixFTPEntryParser); 037 038 parser = factory.createFileEntryParser("EnterpriseUnix"); 039 assertTrue(parser instanceof UnixFTPEntryParser); 040 assertFalse(parser instanceof EnterpriseUnixFTPEntryParser); 041 042 // works because contains the expression "Unix" 043 parser = factory.createFileEntryParser("UnixFTPEntryParser"); 044 assertTrue(parser instanceof UnixFTPEntryParser); 045 046 try { 047 parser = factory.createFileEntryParser("NT"); 048 fail("Exception should have been thrown. \"NT\" is not a recognized key"); 049 } catch (ParserInitializationException pie) { 050 assertNull(pie.getRootCause()); 051 } 052 053 parser = factory.createFileEntryParser("WindowsNT"); 054 assertTrue(parser instanceof CompositeFileEntryParser); 055 056 parser = factory.createFileEntryParser("ThigaVMSaMaJig"); 057 assertTrue(parser instanceof VMSFTPEntryParser); 058 059 parser = factory.createFileEntryParser("OS/2"); 060 assertTrue(parser instanceof OS2FTPEntryParser); 061 062 parser = factory.createFileEntryParser("OS/400"); 063 assertTrue(parser instanceof CompositeFileEntryParser); 064 065 parser = factory.createFileEntryParser("AS/400"); 066 assertTrue(parser instanceof CompositeFileEntryParser); 067 068 // Added test to make sure it handles the Unix systems that were 069 // compiled with OS as "UNKNOWN". This test validates that the 070 // check is case-insensitive. 071 parser = factory.createFileEntryParser("UNKNOWN Type: L8"); 072 073 try { 074 parser = factory.createFileEntryParser("OS2FTPFileEntryParser"); 075 fail("Exception should have been thrown. \"OS2FTPFileEntryParser\" is not a recognized key"); 076 } catch (ParserInitializationException pie) { 077 assertNull(pie.getRootCause()); 078 } 079 080 parser = factory.createFileEntryParser( 081 "org.apache.commons.net.ftp.parser.OS2FTPEntryParser"); 082 assertTrue(parser instanceof OS2FTPEntryParser); 083 084 try { 085 parser = factory.createFileEntryParser( 086 "org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory"); 087 fail("Exception should have been thrown. \"DefaultFTPFileEntryParserFactory\" does not implement FTPFileEntryParser"); 088 } catch (ParserInitializationException pie) { 089 Throwable root = pie.getRootCause(); 090 assertTrue(root instanceof ClassCastException); 091 } 092 } 093 } 094