package com.celements.ftpclient;
import static org.junit.Assert.*;
import org.apache.commons.net.ftp.FTPClient;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockftpserver.stub.StubFtpServer;
import com.celements.common.test.AbstractBridgedComponentTestCase;
import com.xpn.xwiki.web.Utils;
public class CelFTPClientTest extends AbstractBridgedComponentTestCase {
private static final int _TEST_FTP_PORT = 23456;
private CelFTPClient ftpClient;
private StubFtpServer stubFtpServer;
@Before
public void setUp_FTPClientTest() throws Exception {
ftpClient = (CelFTPClient) Utils.getComponent(ICelFTPClient.class);
stubFtpServer = new StubFtpServer();
stubFtpServer.setServerControlPort(_TEST_FTP_PORT);
}
@After
public void tearDown_FTPClientTest() {
if (stubFtpServer.isStarted()) {
stubFtpServer.stop();
}
}
@Test
public void testPER_LOOKUP() {
replayDefault();
CelFTPClient secondFTPClient = (CelFTPClient) Utils.getComponent(ICelFTPClient.class);
assertNotSame(ftpClient, secondFTPClient);
verifyDefault();
}
@Test
public void testConnectAndLogin() throws Exception {
stubFtpServer.start();
replayDefault();
ftpClient.connectAndLogin("127.0.0.1", _TEST_FTP_PORT, "testUser", "test!pass");
assertTrue(ftpClient.isConnectedAndReady());
assertEquals(FTPClient.PASSIVE_LOCAL_DATA_CONNECTION_MODE, ftpClient.getDataConnectionMode());
verifyDefault();
}
@Test
public void testIsConnectedAndReady() throws Exception {
stubFtpServer.start();
replayDefault();
ftpClient.connect("127.0.0.1", _TEST_FTP_PORT);
assertTrue(ftpClient.isConnectedAndReady());
verifyDefault();
}
@Test
public void testIsConnectedAndReady_connectionDropped() throws Exception {
stubFtpServer.start();
replayDefault();
ftpClient.connect("127.0.0.1", _TEST_FTP_PORT);
stubFtpServer.stop();
assertFalse("Connection drop must result in isConnectedAndReady returing false",
ftpClient.isConnectedAndReady());
verifyDefault();
}
@Test
public void testIsConnectedAndReady_connectionDropped_twoCalls() throws Exception {
stubFtpServer.start();
replayDefault();
ftpClient.connect("127.0.0.1", _TEST_FTP_PORT);
stubFtpServer.stop();
assertFalse("[1] Connection drop must result in isConnectedAndReady returing false",
ftpClient.isConnectedAndReady());
assertFalse("[2] Connection drop must result in isConnectedAndReady returing false",
ftpClient.isConnectedAndReady());
verifyDefault();
}
}