/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2015 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * 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. * ******************************************************************************/ package org.pentaho.di.job.entries.ftpsget; import org.ftp4che.util.ftpfile.FTPFile; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.pentaho.di.core.KettleEnvironment; import java.io.File; import java.io.PrintWriter; import static org.apache.commons.io.FileUtils.contentEquals; import static org.junit.Assert.assertTrue; import static org.pentaho.di.job.entries.ftpsget.FTPSConnection.CONNECTION_TYPE_FTP_IMPLICIT_SSL; import static org.pentaho.di.job.entries.ftpsget.FtpsServer.*; /** * @author Andrey Khayrutdinov */ public class FTPSConnectionTest { private static FtpsServer server; @BeforeClass public static void createServer() throws Exception { KettleEnvironment.init(); server = FtpsServer.createDefaultServer(); server.start(); } @AfterClass public static void stopServer() throws Exception { if ( server != null ) { server.stop(); server = null; } } private FTPSConnection connection; @Before public void createConnection() throws Exception { connection = new FTPSConnection( CONNECTION_TYPE_FTP_IMPLICIT_SSL, "localhost", DEFAULT_PORT, ADMIN, PASSWORD ); connection.connect(); } @After public void closeConnection() throws Exception { if ( connection != null ) { connection.disconnect(); connection = null; } } @Test public void download() throws Exception { File tmp = File.createTempFile( "FTPSConnectionTest", "download" ); tmp.deleteOnExit(); try { connection.downloadFile( new FTPFile( "/", SAMPLE_FILE, false ), tmp.getAbsolutePath() ); assertTrue( contentEquals( new File( FtpsServer.USER_HOME_DIR + "/" + SAMPLE_FILE ), tmp ) ); } finally { tmp.delete(); } } @Test public void upload() throws Exception { File tmp = File.createTempFile( "FTPSConnectionTest", "download" ); PrintWriter pw = new PrintWriter( tmp ); try { pw.print( "test" ); pw.flush(); } finally { pw.close(); } tmp.deleteOnExit(); try { connection.uploadFile( tmp.getAbsolutePath(), "uploaded.txt" ); File uploaded = new File( FtpsServer.USER_HOME_DIR + "/uploaded.txt" ); assertTrue( uploaded.exists() ); assertTrue( contentEquals( uploaded, tmp ) ); uploaded.delete(); } finally { tmp.delete(); } } }