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; 1717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 1817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.apache.commons.net.ftp.FTPClient; 1917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.command.CommandNames; 2017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.stub.StubFtpServer; 2117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.stub.command.PwdCommandHandler; 2217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.test.AbstractTest; 2317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.test.PortTestUtil; 2417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 2517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/** 2617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Tests for StubFtpServer that require the StubFtpServer thread to be started. 2717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 2817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @version $Revision$ - $Date$ 2917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 3017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @author Chris Mair 3117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 3217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpublic final class StubFtpServer_StartTest extends AbstractTest { 3317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 3417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair private static final String SERVER = "localhost"; 3517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 3617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair private StubFtpServer stubFtpServer; 3717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 3817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 3917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Test the start() and stop() methods. Start the StubFtpServer and then stop it immediately. 4017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 4117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void testStartAndStop() throws Exception { 4217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer = new StubFtpServer(); 4317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.setServerControlPort(PortTestUtil.getFtpServerControlPort()); 4417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertEquals("started - before", false, stubFtpServer.isStarted()); 4517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 4617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.start(); 4717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair Thread.sleep(200L); // give it some time to get started 4817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertEquals("started - after start()", true, stubFtpServer.isStarted()); 4917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertEquals("shutdown - after start()", false, stubFtpServer.isShutdown()); 5017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 5117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.stop(); 5217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 5317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertEquals("shutdown - after stop()", true, stubFtpServer.isShutdown()); 5417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 5517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 5617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 5717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Test setting a non-default port number for the StubFtpServer control connection socket. 5817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 5917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void testCustomServerControlPort() throws Exception { 6017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair final int SERVER_CONTROL_PORT = 9187; 6117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair final String DIR = "abc 1234567"; 6217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair PwdCommandHandler pwd = new PwdCommandHandler(); 6317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair pwd.setDirectory(DIR); 6417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 6517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer = new StubFtpServer(); 6617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.setServerControlPort(SERVER_CONTROL_PORT); 6717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.setCommandHandler(CommandNames.PWD, pwd); 6817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 6917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.start(); 7017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 7117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair try { 7217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair FTPClient ftpClient = new FTPClient(); 7317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair ftpClient.connect(SERVER, SERVER_CONTROL_PORT); 7417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 7517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertEquals("pwd", DIR, ftpClient.printWorkingDirectory()); 7617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 7717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair finally { 7817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair stubFtpServer.stop(); 7917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 8017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 8117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 8217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair} 83