blob: 2d42431a400aec1a2b054dc59a4f10ccfc92e25f [file] [log] [blame]
package org.mockftpserver.fake.example
import org.apache.commons.net.ftp.FTPClient
import org.apache.commons.net.ftp.FTPFile
import org.mockftpserver.fake.FakeFtpServer
import org.mockftpserver.test.AbstractGroovyTestCase
import org.springframework.context.ApplicationContext
import org.springframework.context.support.ClassPathXmlApplicationContext
/*
* Copyright 2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class FakeFtpServerSpringConfigurationTest extends AbstractGroovyTestCase {
static final SERVER = "localhost"
static final PORT = 9981
static final USERNAME = 'joe' // Must match Spring config
static final PASSWORD = 'password' // Must match Spring config
private FakeFtpServer fakeFtpServer
private FTPClient ftpClient
void testFakeFtpServer_Unix() {
startFtpServer('fakeftpserver-beans.xml')
connectAndLogin()
// PWD
String dir = ftpClient.printWorkingDirectory()
assert dir == '/'
// LIST
FTPFile[] files = ftpClient.listFiles()
LOG.info("FTPFile[0]=" + files[0])
assert files.length == 1
// RETR
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()
assert ftpClient.retrieveFile("File.txt", outputStream)
LOG.info("File contents=[" + outputStream.toString() + "]")
}
void testFakeFtpServer_Windows_WithPermissions() {
startFtpServer('fakeftpserver-permissions-beans.xml')
connectAndLogin()
// PWD
String dir = ftpClient.printWorkingDirectory()
assert dir == 'c:\\'
// LIST
FTPFile[] files = ftpClient.listFiles()
assert files.length == 2
LOG.info("FTPFile[0]=" + files[0])
LOG.info("FTPFile[1]=" + files[1])
// RETR - File1.txt; we have required permissions
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()
assert ftpClient.retrieveFile("File1.txt", outputStream)
LOG.info("File contents=[" + outputStream.toString() + "]")
// RETR - File2.txt; we DO NOT have required permissions
outputStream = new ByteArrayOutputStream()
assert !ftpClient.retrieveFile("File2.txt", outputStream)
assert ftpClient.replyCode == 550
}
void setUp() {
super.setUp()
ftpClient = new FTPClient()
}
void tearDown() {
super.tearDown()
fakeFtpServer?.stop()
}
private void startFtpServer(String springConfigFile) {
ApplicationContext context = new ClassPathXmlApplicationContext(springConfigFile)
fakeFtpServer = (FakeFtpServer) context.getBean("fakeFtpServer")
fakeFtpServer.start()
}
private void connectAndLogin() {
ftpClient.connect(SERVER, PORT)
assert ftpClient.login(USERNAME, PASSWORD)
}
}