100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/* 200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Copyright 2008 the original author or authors. 300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Licensed under the Apache License, Version 2.0 (the "License"); 500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * you may not use this file except in compliance with the License. 600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * You may obtain a copy of the License at 700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * http://www.apache.org/licenses/LICENSE-2.0 900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 1000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Unless required by applicable law or agreed to in writing, software 1100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * distributed under the License is distributed on an "AS IS" BASIS, 1200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * See the License for the specific language governing permissions and 1400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * limitations under the License. 1500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 1600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairpackage org.mockftpserver.fake 1700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 1800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.apache.commons.net.ftp.FTP 1900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.apache.commons.net.ftp.FTPClient 2000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.apache.commons.net.ftp.FTPFile 2100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.command.CommandNames 2200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.core.command.StaticReplyCommandHandler 2300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 2400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.fake.filesystem.DirectoryEntry 2500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.fake.filesystem.FileEntry 2600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.fake.filesystem.FileSystem 2700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.fake.filesystem.UnixFakeFileSystem 2800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.fake.filesystem.WindowsFakeFileSystem 2900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.stub.command.CwdCommandHandler 3000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.test.AbstractGroovyTestCase 3100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairimport org.mockftpserver.test.PortTestUtil 3200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 3300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair/** 3400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Integration tests for FakeFtpServer. 3500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 3600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @version $Revision$ - $Date$ 3700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 3800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @author Chris Mair 3900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 4000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismairclass FakeFtpServerIntegrationTest extends AbstractGroovyTestCase { 4100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 4200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final SERVER = "localhost" 4300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final USERNAME = "user123" 4400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final PASSWORD = "password" 4500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final ACCOUNT = "account123" 4600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final ASCII_DATA = "abcdef\tghijklmnopqr" 4700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final BINARY_DATA = new byte[256] 4800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final ROOT_DIR = "c:/" 4900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final HOME_DIR = p(ROOT_DIR, "home") 5000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final SUBDIR_NAME = 'sub' 5100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final SUBDIR_NAME2 = "archive" 5200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final SUBDIR = p(HOME_DIR, SUBDIR_NAME) 5300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final FILENAME1 = "abc.txt" 5400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final FILENAME2 = "SomeOtherFile.xml" 5500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final FILE1 = p(HOME_DIR, FILENAME1) 5600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair static final SYSTEM_NAME = "WINDOWS" 5700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 5800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private FakeFtpServer ftpServer 5900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private FTPClient ftpClient 6000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private FileSystem fileSystem 6100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private UserAccount userAccount 6200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 6300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair //------------------------------------------------------------------------- 6400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // Tests 6500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair //------------------------------------------------------------------------- 6600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 6700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testAbor() { 6800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 6900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.abort() 7000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("ABOR", 226) 7100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 7200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 7300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testAcct() { 7400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 7500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.acct(ACCOUNT) == 230 7600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 7700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 7800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testAllo() { 7900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 8000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.allocate(99) 8100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("ALLO", 200) 8200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 8300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 8400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testAppe() { 8500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def ORIGINAL_CONTENTS = '123 456 789' 8600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(path: FILE1, contents: ORIGINAL_CONTENTS)) 8700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 8800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 8900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 9000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Put File for local path [$FILE1]") 9100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def inputStream = new ByteArrayInputStream(ASCII_DATA.getBytes()) 9200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.appendFile(FILE1, inputStream) 9300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def contents = fileSystem.getEntry(FILE1).createInputStream().text 9400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("File contents=[" + contents + "]") 9500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert contents == ORIGINAL_CONTENTS + ASCII_DATA 9600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 9700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 9800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testCdup() { 9900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 10000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.changeToParentDirectory() 10100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("changeToParentDirectory", 200) 10200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 10300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 10400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testCwd() { 10500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 10600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.changeWorkingDirectory(SUBDIR_NAME) 10700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("changeWorkingDirectory", 250) 10800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 10900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 11000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair /** 11100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Test that a CWD to ".." properly resolves the current dir (without the "..") so that PWD returns the parent 11200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 11300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testCwd_DotDot_Pwd() { 11400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 11500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.changeWorkingDirectory("..") 11600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("changeWorkingDirectory", 250) 11700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert p(ftpClient.printWorkingDirectory()) == p(ROOT_DIR) 11800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.changeWorkingDirectory("home") 11900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert p(ftpClient.printWorkingDirectory()) == p(HOME_DIR) 12000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 12100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 12200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair /** 12300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Test that a CWD to "." properly resolves the current dir (without the ".") so that PWD returns the parent 12400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 12500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testCwd_Dot_Pwd() { 12600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 12700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.changeWorkingDirectory(".") 12800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("changeWorkingDirectory", 250) 12900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert p(ftpClient.printWorkingDirectory()) == p(HOME_DIR) 13000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 13100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 13200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testCwd_UseStaticReplyCommandHandler() { 13300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair final int REPLY_CODE = 500; 13400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair StaticReplyCommandHandler cwdCommandHandler = new StaticReplyCommandHandler(REPLY_CODE); 13500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.setCommandHandler(CommandNames.CWD, cwdCommandHandler); 13600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 13700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 13800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert !ftpClient.changeWorkingDirectory(SUBDIR_NAME) 13900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("changeWorkingDirectory", REPLY_CODE) 14000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 14100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 14200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testCwd_UseStubCommandHandler() { 14300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair final int REPLY_CODE = 502; 14400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair CwdCommandHandler cwdCommandHandler = new CwdCommandHandler(); // Stub command handler 14500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair cwdCommandHandler.setReplyCode(REPLY_CODE); 14600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.setCommandHandler(CommandNames.CWD, cwdCommandHandler); 14700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 14800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 14900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert !ftpClient.changeWorkingDirectory(SUBDIR_NAME) 15000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("changeWorkingDirectory", REPLY_CODE) 15100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert cwdCommandHandler.getInvocation(0) 15200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 15300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 15400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testDele() { 15500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(FILE1)) 15600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 15700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 15800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.deleteFile(FILENAME1) 15900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("deleteFile", 250) 16000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert !fileSystem.exists(FILENAME1) 16100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 16200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 16300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testEprt() { 16400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair log("Skipping...") 16500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair// ftpClientConnectAndLogin() 16600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair// assert ftpClient.sendCommand("EPRT", "|2|1080::8:800:200C:417A|5282|") == 200 16700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 16800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 16900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testEpsv() { 17000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 17100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.sendCommand("EPSV") == 229 17200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 17300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 17400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testFeat_UseStaticReplyCommandHandler() { 17500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // The FEAT command is not supported out of the box 17600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair StaticReplyCommandHandler featCommandHandler = new StaticReplyCommandHandler(211, "No Features"); 17700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.setCommandHandler("FEAT", featCommandHandler); 17800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 17900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 18000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.sendCommand("FEAT") == 211 18100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 18200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 18300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testHelp() { 18400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.helpText = [a: 'aaa', '': 'default'] 18500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnect() 18600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 18700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair String help = ftpClient.listHelp() 18800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert help.contains('default') 18900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("listHelp", 214) 19000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 19100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair help = ftpClient.listHelp('a') 19200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert help.contains('aaa') 19300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("listHelp", 214) 19400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 19500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair help = ftpClient.listHelp('bad') 19600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert help.contains('bad') 19700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("listHelp", 214) 19800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 19900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 20000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testList() { 20100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def LAST_MODIFIED = new Date() 20200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(path: p(SUBDIR, FILENAME1), lastModified: LAST_MODIFIED, contents: ASCII_DATA)) 20300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new DirectoryEntry(path: p(SUBDIR, SUBDIR_NAME2), lastModified: LAST_MODIFIED)) 20400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 20500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 20600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 20700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair FTPFile[] files = ftpClient.listFiles(SUBDIR) 20800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert files.length == 2 20900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 21000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // Can't be sure of order 21100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair FTPFile fileEntry = (files[0].getType() == FTPFile.FILE_TYPE) ? files[0] : files[1] 21200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair FTPFile dirEntry = (files[0].getType() == FTPFile.FILE_TYPE) ? files[1] : files[0] 21300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyFTPFile(fileEntry, FTPFile.FILE_TYPE, FILENAME1, ASCII_DATA.size()) 21400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyFTPFile(dirEntry, FTPFile.DIRECTORY_TYPE, SUBDIR_NAME2, 0) 21500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 21600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("list", 226) 21700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 21800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 21900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testList_Unix() { 22000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.systemName = 'UNIX' 22100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair userAccount.homeDirectory = '/' 22200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 22300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def unixFileSystem = new UnixFakeFileSystem() 22400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair unixFileSystem.createParentDirectoriesAutomatically = true 22500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair unixFileSystem.add(new DirectoryEntry('/')) 22600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.fileSystem = unixFileSystem 22700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 22800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def LAST_MODIFIED = new Date() 22900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair unixFileSystem.add(new FileEntry(path: p('/', FILENAME1), lastModified: LAST_MODIFIED, contents: ASCII_DATA)) 23000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair unixFileSystem.add(new DirectoryEntry(path: p('/', SUBDIR_NAME2), lastModified: LAST_MODIFIED)) 23100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 23200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 23300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 23400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair FTPFile[] files = ftpClient.listFiles('/') 23500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert files.length == 2 23600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 23700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // Can't be sure of order 23800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair FTPFile fileEntry = (files[0].getType() == FTPFile.FILE_TYPE) ? files[0] : files[1] 23900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair FTPFile dirEntry = (files[0].getType() == FTPFile.FILE_TYPE) ? files[1] : files[0] 24000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 24100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyFTPFile(dirEntry, FTPFile.DIRECTORY_TYPE, SUBDIR_NAME2, 0) 24200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyFTPFile(fileEntry, FTPFile.FILE_TYPE, FILENAME1, ASCII_DATA.size()) 24300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("list", 226) 24400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 24500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 24600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testLogin() { 24700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnect() 24800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Logging in as $USERNAME/$PASSWORD") 24900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.login(USERNAME, PASSWORD) 25000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("login with $USERNAME/$PASSWORD", 230) 25100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 25200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertTrue("isStarted", ftpServer.isStarted()); 25300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertFalse("isShutdown", ftpServer.isShutdown()); 25400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 25500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 25600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testLogin_WithAccount() { 25700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair userAccount.accountRequiredForLogin = true 25800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnect() 25900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Logging in as $USERNAME/$PASSWORD with $ACCOUNT") 26000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.login(USERNAME, PASSWORD, ACCOUNT) 26100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("login with $USERNAME/$PASSWORD with $ACCOUNT", 230) 26200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 26300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 26400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testMkd() { 26500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 26600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 26700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def DIR = p(HOME_DIR, 'NewDir') 26800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.makeDirectory(DIR) 26900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("makeDirectory", 257) 27000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert fileSystem.isDirectory(DIR) 27100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 27200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 27300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testMode() { 27400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 27500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE); 27600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("MODE", 200) 27700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 27800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 27900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testNlst() { 28000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(path: p(SUBDIR, FILENAME1))) 28100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new DirectoryEntry(path: p(SUBDIR, SUBDIR_NAME2))) 28200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 28300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 28400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 28500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair String[] filenames = ftpClient.listNames(SUBDIR) 28600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert filenames as Set == [FILENAME1, SUBDIR_NAME2] as Set 28700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("listNames", 226) 28800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 28900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 29000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testNoop() { 29100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 29200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.sendNoOp() 29300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("NOOP", 200) 29400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 29500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 29600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testPasv_Nlst() { 29700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(path: p(SUBDIR, FILENAME1))) 29800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(path: p(SUBDIR, FILENAME2))) 29900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 30000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 30100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClient.enterLocalPassiveMode(); 30200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 30300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair String[] filenames = ftpClient.listNames(SUBDIR) 30400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert filenames == [FILENAME1, FILENAME2] 30500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("listNames", 226) 30600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 30700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 30800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testPwd() { 30900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 31000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.printWorkingDirectory() == HOME_DIR 31100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("printWorkingDirectory", 257) 31200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 31300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 31400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testQuit() { 31500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnect() 31600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClient.quit() 31700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("quit", 221) 31800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 31900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 32000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testRein() { 32100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 32200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.rein() == 220 32300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.cdup() == 530 // now logged out 32400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 32500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 32600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testRest() { 32700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 32800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.rest("marker") == 350 32900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 33000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 33100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testRetr() { 33200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(path: FILE1, contents: ASCII_DATA)) 33300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 33400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 33500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 33600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Get File for remotePath [$FILE1]") 33700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def outputStream = new ByteArrayOutputStream() 33800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.retrieveFile(FILE1, outputStream) 33900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("File contents=[${outputStream.toString()}]") 34000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert outputStream.toString() == ASCII_DATA 34100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 34200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 34300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testRmd() { 34400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 34500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 34600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.removeDirectory(SUBDIR) 34700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("removeDirectory", 250) 34800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert !fileSystem.exists(SUBDIR) 34900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 35000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 35100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testRename() { // RNFR and RNTO 35200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new FileEntry(FILE1)) 35300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 35400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 35500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 35600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.rename(FILE1, FILE1 + "NEW") 35700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("rename", 250) 35800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert !fileSystem.exists(FILE1) 35900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert fileSystem.exists(FILE1 + "NEW") 36000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 36100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 36200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testSite() { 36300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 36400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.site("parameters,1,2,3") == 200 36500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 36600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 36700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testSmnt() { 36800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 36900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.smnt("dir") == 250 37000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 37100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 37200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testStat() { 37300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 37400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def status = ftpClient.getStatus() 37500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert status.contains('Connected') 37600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("stat", 211) 37700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 37800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 37900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testStor() { 38000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 38100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 38200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Put File for local path [$FILE1]") 38300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def inputStream = new ByteArrayInputStream(ASCII_DATA.getBytes()) 38400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.storeFile(FILENAME1, inputStream) // relative to homeDirectory 38500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def contents = fileSystem.getEntry(FILE1).createInputStream().text 38600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("File contents=[" + contents + "]") 38700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert contents == ASCII_DATA 38800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 38900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 39000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testStou() { 39100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 39200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 39300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def inputStream = new ByteArrayInputStream(ASCII_DATA.getBytes()) 39400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.storeUniqueFile(FILENAME1, inputStream) 39500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 39600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def names = fileSystem.listNames(HOME_DIR) 39700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def filename = names.find {name -> name.startsWith(FILENAME1) } 39800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert filename 39900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 40000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def contents = fileSystem.getEntry(p(HOME_DIR, filename)).createInputStream().text 40100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("File contents=[" + contents + "]") 40200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert contents == ASCII_DATA 40300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 40400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 40500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testStru() { 40600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 40700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.setFileStructure(FTP.FILE_STRUCTURE); 40800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("STRU", 200) 40900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 41000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 41100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testSyst() { 41200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 41300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 41400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def systemName = ftpClient.getSystemName() 41500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("system name = [$systemName]") 41600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert systemName.contains('"' + SYSTEM_NAME + '"') 41700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("getSystemName", 215) 41800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 41900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 42000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testType() { 42100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 42200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.type(FTP.ASCII_FILE_TYPE) 42300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("TYPE", 200) 42400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 42500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 42600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void testUnrecognizedCommand() { 42700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnectAndLogin() 42800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.sendCommand("XXX") == 502 42900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("XXX", 502) 43000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 43100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 43200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // ------------------------------------------------------------------------- 43300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // Test setup and tear-down 43400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // ------------------------------------------------------------------------- 43500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 43600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair /** 43700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Perform initialization before each test 43800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @see org.mockftpserver.test.AbstractTestCase#setUp() 43900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 44000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void setUp() { 44100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair super.setUp() 44200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 44300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair for (int i = 0; i < BINARY_DATA.length; i++) { 44400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair BINARY_DATA[i] = (byte) i 44500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 44600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 44700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer = new FakeFtpServer() 44800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.serverControlPort = PortTestUtil.getFtpServerControlPort() 44900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.systemName = SYSTEM_NAME 45000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 45100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem = new WindowsFakeFileSystem() 45200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.createParentDirectoriesAutomatically = true 45300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair fileSystem.add(new DirectoryEntry(SUBDIR)) 45400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.fileSystem = fileSystem 45500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 45600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair userAccount = new UserAccount(USERNAME, PASSWORD, HOME_DIR) 45700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.addUserAccount(userAccount) 45800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 45900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.start() 46000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClient = new FTPClient() 46100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 46200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 46300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair /** 46400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Perform cleanup after each test 46500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @see org.mockftpserver.test.AbstractTestCase#tearDown() 46600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 46700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair void tearDown() { 46800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair super.tearDown() 46900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpServer.stop() 47000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 47100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 47200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // ------------------------------------------------------------------------- 47300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // Internal Helper Methods 47400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair // ------------------------------------------------------------------------- 47500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 47600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private ftpClientConnectAndLogin() { 47700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClientConnect() 47800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assert ftpClient.login(USERNAME, PASSWORD) 47900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 48000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 48100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair /** 48200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Connect to the server from the FTPClient 48300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 48400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private void ftpClientConnect() { 48500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair def port = PortTestUtil.getFtpServerControlPort() 48600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Conecting to $SERVER on port $port") 48700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair ftpClient.connect(SERVER, port) 48800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair verifyReplyCode("connect", 220) 48900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 49000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 49100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair /** 49200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * Assert that the FtpClient reply code is equal to the expected value 49300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * 49400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @param operation - the description of the operation performed used in the error message 49500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair * @param expectedReplyCode - the expected FtpClient reply code 49600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair */ 49700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private void verifyReplyCode(String operation, int expectedReplyCode) { 49800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair int replyCode = ftpClient.getReplyCode() 49900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info("Reply: operation=\"" + operation + "\" replyCode=" + replyCode) 50000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertEquals("Unexpected replyCode for " + operation, expectedReplyCode, replyCode) 50100dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 50200dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 50300dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair private void verifyFTPFile(FTPFile ftpFile, int type, String name, long size) { 50400dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair LOG.info(ftpFile.toString()) 50500dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertEquals("type: " + ftpFile, type, ftpFile.getType()) 50600dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertEquals("name: " + ftpFile, name, ftpFile.getName()) 50700dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair assertEquals("size: " + ftpFile, size, ftpFile.getSize()) 50800dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair } 50900dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair 51000dc7bdcf1df9e86789d963984dfc6912a8854c6chrismair}