summaryrefslogtreecommitdiff
path: root/tags/2.3/src/test/groovy/org/mockftpserver/fake/example/FakeFtpServerSpringConfigurationTest.groovy
diff options
context:
space:
mode:
Diffstat (limited to 'tags/2.3/src/test/groovy/org/mockftpserver/fake/example/FakeFtpServerSpringConfigurationTest.groovy')
-rw-r--r--tags/2.3/src/test/groovy/org/mockftpserver/fake/example/FakeFtpServerSpringConfigurationTest.groovy100
1 files changed, 100 insertions, 0 deletions
diff --git a/tags/2.3/src/test/groovy/org/mockftpserver/fake/example/FakeFtpServerSpringConfigurationTest.groovy b/tags/2.3/src/test/groovy/org/mockftpserver/fake/example/FakeFtpServerSpringConfigurationTest.groovy
new file mode 100644
index 0000000..2d42431
--- /dev/null
+++ b/tags/2.3/src/test/groovy/org/mockftpserver/fake/example/FakeFtpServerSpringConfigurationTest.groovy
@@ -0,0 +1,100 @@
+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)
+ }
+
+} \ No newline at end of file