117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/* 217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Copyright 2007 the original author or authors. 317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Licensed under the Apache License, Version 2.0 (the "License"); 517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * you may not use this file except in compliance with the License. 617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * You may obtain a copy of the License at 717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * http://www.apache.org/licenses/LICENSE-2.0 917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 1017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Unless required by applicable law or agreed to in writing, software 1117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * distributed under the License is distributed on an "AS IS" BASIS, 1217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * See the License for the specific language governing permissions and 1417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * limitations under the License. 1517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 1617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpackage org.mockftpserver.stub.command; 1717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 1817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport java.net.InetAddress; 1917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport java.net.UnknownHostException; 2017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 2117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 2217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.apache.log4j.Logger; 2317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.command.Command; 2417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.command.CommandNames; 2517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.command.ReplyCodes; 2617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.stub.command.PasvCommandHandler; 2717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 2817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/** 2917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Tests for the PasvCommandHandler class 3017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 3117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @version $Revision$ - $Date$ 3217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 3317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @author Chris Mair 3417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 3517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpublic final class PasvCommandHandlerTest extends AbstractCommandHandlerTest { 3617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 3717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair private static final Logger LOG = Logger.getLogger(PasvCommandHandlerTest.class); 3817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair private static final int PORT = (23 << 8) + 77; 3917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 4017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair private PasvCommandHandler commandHandler; 4117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 4217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 4317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Test the handleCommand() method 4417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 4517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void testHandleCommand() throws Exception { 4617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 4717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair final InetAddress SERVER = inetAddress("192.168.0.2"); 4817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair session.switchToPassiveMode(); 4917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair control(session).setReturnValue(PORT); 5017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair session.getServerHost(); 5117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair control(session).setReturnValue(SERVER); 5217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair session.sendReply(ReplyCodes.PASV_OK, formattedReplyTextFor(227, "(192,168,0,2,23,77)")); 5317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair replay(session); 5417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 5517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair final Command COMMAND = new Command(CommandNames.PASV, EMPTY); 5617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 5717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair commandHandler.handleCommand(COMMAND, session); 5817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair verify(session); 5917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 6017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair verifyNumberOfInvocations(commandHandler, 1); 6117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair verifyNoDataElements(commandHandler.getInvocation(0)); 6217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 6317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 6417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 6517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Test convertHostAndPortToStringOfBytes() method 6617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 6717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void testConvertHostAndPortToStringOfBytes() throws UnknownHostException { 6817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair InetAddress host = InetAddress.getByName("196.168.44.55"); 6917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair String result = PasvCommandHandler.convertHostAndPortToStringOfBytes(host, PORT); 7017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair LOG.info("result=" + result); 7117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertEquals("result", "196,168,44,55,23,77", result); 7217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 7317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 7417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 7517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Perform initialization before each test 7617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @see org.mockftpserver.stub.command.AbstractCommandHandlerTest#setUp() 7717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 7817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair protected void setUp() throws Exception { 7917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair super.setUp(); 8017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair commandHandler = new PasvCommandHandler(); 8117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair commandHandler.setReplyTextBundle(replyTextBundle); 8217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 8317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 8417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair} 85