74 lines
2.3 KiB
Java
74 lines
2.3 KiB
Java
package com.baeldung.ftp;
|
|
|
|
import org.junit.After;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.mockftpserver.fake.FakeFtpServer;
|
|
import org.mockftpserver.fake.UserAccount;
|
|
import org.mockftpserver.fake.filesystem.DirectoryEntry;
|
|
import org.mockftpserver.fake.filesystem.FileEntry;
|
|
import org.mockftpserver.fake.filesystem.FileSystem;
|
|
import org.mockftpserver.fake.filesystem.UnixFakeFileSystem;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.net.URISyntaxException;
|
|
import java.util.Collection;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
public class FtpClientIntegrationTest {
|
|
|
|
private FakeFtpServer fakeFtpServer;
|
|
|
|
private FtpClient ftpClient;
|
|
|
|
@Before
|
|
public void setup() throws IOException {
|
|
fakeFtpServer = new FakeFtpServer();
|
|
fakeFtpServer.addUserAccount(new UserAccount("user", "password", "/data"));
|
|
|
|
FileSystem fileSystem = new UnixFakeFileSystem();
|
|
fileSystem.add(new DirectoryEntry("/data"));
|
|
fileSystem.add(new FileEntry("/data/foobar.txt", "abcdef 1234567890"));
|
|
fakeFtpServer.setFileSystem(fileSystem);
|
|
fakeFtpServer.setServerControlPort(0);
|
|
|
|
fakeFtpServer.start();
|
|
|
|
ftpClient = new FtpClient("localhost", fakeFtpServer.getServerControlPort(), "user", "password");
|
|
ftpClient.open();
|
|
}
|
|
|
|
@After
|
|
public void teardown() throws IOException {
|
|
ftpClient.close();
|
|
fakeFtpServer.stop();
|
|
}
|
|
|
|
@Test
|
|
public void givenRemoteFile_whenListingRemoteFiles_thenItIsContainedInList() throws IOException {
|
|
Collection<String> files = ftpClient.listFiles("");
|
|
|
|
assertThat(files).contains("foobar.txt");
|
|
}
|
|
|
|
@Test
|
|
public void givenRemoteFile_whenDownloading_thenItIsOnTheLocalFilesystem() throws IOException {
|
|
ftpClient.downloadFile("/foobar.txt", "downloaded_buz.txt");
|
|
|
|
assertThat(new File("downloaded_buz.txt")).exists();
|
|
new File("downloaded_buz.txt").delete(); // cleanup
|
|
}
|
|
|
|
@Test
|
|
public void givenLocalFile_whenUploadingIt_thenItExistsOnRemoteLocation() throws URISyntaxException, IOException {
|
|
File file = new File(getClass().getClassLoader().getResource("ftp/baz.txt").toURI());
|
|
|
|
ftpClient.putFileToPath(file, "/buz.txt");
|
|
|
|
assertThat(fakeFtpServer.getFileSystem().exists("/buz.txt")).isTrue();
|
|
}
|
|
|
|
}
|