/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ package org.apache.activemq.blob; import javax.jms.Connection; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.activemq.EmbeddedBrokerTestSupport; import org.apache.activemq.util.IOHelper; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.Authority; import org.apache.ftpserver.ftplet.UserManager; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; import org.apache.ftpserver.usermanager.impl.BaseUser; import org.apache.ftpserver.usermanager.impl.WritePermission; import org.jmock.Mockery; public abstract class FTPTestSupport extends EmbeddedBrokerTestSupport { protected static final String ftpServerListenerName = "default"; protected Connection connection; protected FtpServer server; String userNamePass = "activemq"; Mockery context = null; String ftpUrl; int ftpPort; final File ftpHomeDirFile = new File("target/FTPBlobTest/ftptest"); @Override protected void setUp() throws Exception { if (ftpHomeDirFile.getParentFile().exists()) { IOHelper.deleteFile(ftpHomeDirFile.getParentFile()); } ftpHomeDirFile.mkdirs(); ftpHomeDirFile.getParentFile().deleteOnExit(); FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); UserManager userManager = userManagerFactory.createUserManager(); BaseUser user = new BaseUser(); user.setName("activemq"); user.setPassword("activemq"); user.setHomeDirectory(ftpHomeDirFile.getParent()); // authorize user List<Authority> auths = new ArrayList<>(); Authority auth = new WritePermission(); auths.add(auth); user.setAuthorities(auths); userManager.save(user); BaseUser guest = new BaseUser(); guest.setName("guest"); guest.setPassword("guest"); guest.setHomeDirectory(ftpHomeDirFile.getParent()); userManager.save(guest); serverFactory.setUserManager(userManager); factory.setPort(0); serverFactory.addListener(ftpServerListenerName, factory.createListener()); server = serverFactory.createServer(); server.start(); ftpPort = serverFactory.getListener(ftpServerListenerName).getPort(); super.setUp(); } public void setConnection() throws Exception { ftpUrl = "ftp://" + userNamePass + ":" + userNamePass + "@localhost:" + ftpPort + "/ftptest/"; bindAddress = "vm://localhost?jms.blobTransferPolicy.defaultUploadUrl=" + ftpUrl; connectionFactory = createConnectionFactory(); connection = createConnection(); connection.start(); } @Override protected void tearDown() throws Exception { if (connection != null) { connection.stop(); } super.tearDown(); if (server != null) { server.stop(); } IOHelper.deleteFile(ftpHomeDirFile.getParentFile()); } }