blob: e69bf9e6c5ed836b2cde8f36189d10d2263164cd [file] [log] [blame]
/*
* 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.oodt.cas.protocol.ftp;
//JUnit imports
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
//APACHE imports
import org.apache.ftpserver.ConnectionConfigFactory;
import org.apache.ftpserver.DataConnectionConfigurationFactory;
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.ClearTextPasswordEncryptor;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
//OODT imports
import org.apache.oodt.cas.protocol.ProtocolFile;
import org.apache.oodt.cas.protocol.auth.BasicAuthentication;
import org.apache.oodt.cas.protocol.exceptions.ProtocolException;
//JUnit imports
import junit.framework.TestCase;
import org.globus.ftp.FileInfo;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import static org.mockito.Mockito.spy;
/**
* Test class for {@link CogJGlobusFtpProtocol}.
*
* @author bfoster
*/
public class TestCogJGlobusFtpProtocol extends TestCase {
private static final int PORT = 9000;
private FtpServer server;
private static final File USERS_FILE = new File("src/test/resources/users.properties");
@Override
public void setUp() throws Exception {
assertTrue(USERS_FILE.getAbsolutePath() + " must exist",
USERS_FILE.exists());
FtpServerFactory serverFactory = new FtpServerFactory();
serverFactory.setConnectionConfig(new ConnectionConfigFactory()
.createConnectionConfig());
ListenerFactory listenerFactory = new ListenerFactory();
listenerFactory.setPort(PORT);
listenerFactory
.setDataConnectionConfiguration(new DataConnectionConfigurationFactory()
.createDataConnectionConfiguration());
serverFactory.addListener("default", listenerFactory.createListener());
PropertiesUserManagerFactory umFactory = new PropertiesUserManagerFactory();
umFactory.setPasswordEncryptor(new ClearTextPasswordEncryptor());
umFactory.setFile(USERS_FILE);
serverFactory.setUserManager(umFactory.createUserManager());
server = serverFactory.createServer();
//server.start();
}
@Override
public void tearDown() {
server.stop();
}
public void testLSandCDandPWD() throws ProtocolException {
CogJGlobusFtpProtocol ftpProtocol = spy(new CogJGlobusFtpProtocol(PORT));
BasicAuthentication auth = new BasicAuthentication("anonymous", "password");
/** Mocking server responses to prevent server failure **/
Mockito.doReturn("test/resources").when(ftpProtocol).getCurentDir();
Vector<FileInfo> vector = new Vector<FileInfo>();
FileInfo file = new FileInfo();
file.setName("users.properties");
byte b = 1;
file.setFileType(b);
vector.add(file);
Mockito.doAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
return null;
}}).when(ftpProtocol).setActive();
Mockito.doReturn(vector).when(ftpProtocol).ftpList("*", null);
Mockito.doAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
return null;
}}).when(ftpProtocol).connect("localhost", auth);
Mockito.doAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
return null;
}}).when(ftpProtocol).cd(new ProtocolFile("test/resources", true));
ftpProtocol.connect("localhost", auth);
ftpProtocol.cd(new ProtocolFile("test/resources", true));
List<ProtocolFile> lsResults = ftpProtocol.ls();
assertTrue(lsResults.contains(new ProtocolFile(ftpProtocol.pwd(), "users.properties", false)));
}
}