|
|
package org.openslx.imagemaster;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ConnectException;
import java.util.Date;
import java.util.UUID;
import javax.swing.text.html.ImageView;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;
import org.openslx.imagemaster.thrift.iface.ImageData;
import org.openslx.imagemaster.thrift.iface.ImageServer.Client;
import org.openslx.imagemaster.thrift.iface.FtpCredentials;
import org.openslx.imagemaster.thrift.iface.ServerSessionData;
import org.openslx.imagemaster.thrift.iface.SessionData;
import org.openslx.imagemaster.thrift.iface.UserInfo;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
/**
* Test the authentication
*/
public void testAuthentication() {
TTransport transport = new TSocket("localhost", 9090);
try {
transport.open();
} catch (TTransportException e) {
assertTrue("Could not connect", false);
}
TProtocol protocol = new TBinaryProtocol(transport);
Client client = new Client(protocol);
try {
assertTrue("Could not ping server", client.ping());
} catch (TException e) {
assertTrue("Could not ping server", false);
}
try {
SessionData sessionData = client.authenticate("ns202", "xxxxxxxxxxxx");
UserInfo userInfo = client.getUserFromToken(sessionData.getAuthToken());
System.out.println("User info: " + userInfo);
System.out.println("Server address from MySQL: " + sessionData.serverAddress);
} catch (TException e) {
//e.printStackTrace();
//assertTrue("Could not login", false);
}
}
/**
* Test the server authentification.
*/
public void testServerAuth() {
TTransport transport = new TSocket("localhost", 9090);
try {
transport.open();
} catch (TTransportException e) {
assertTrue("Could not connect", false);
}
TProtocol protocol = new TBinaryProtocol(transport);
Client client = new Client(protocol);
try {
assertTrue("Could not ping server", client.ping());
} catch (TException e) {
assertTrue("Could not ping server", false);
}
try {
String stringToEncrypt = client.startServerAuthentication("Test Organization");
System.out.println("Authentication started. Got string: " + stringToEncrypt);
String response = stringToEncrypt;
ServerSessionData data = client.serverAuthenticate("Test Organization", response);
System.out.println("Authenticated and got sid: '" + data.getSessionId() + "'");
// Create ImageData
int version = 1;
String imageName = "maschine.vmkd";
UUID uuid = UUID.randomUUID();
int imageCreateTime = (int) new Date().getTime();
int imageUpdateTime = imageCreateTime;
String imageOwner = "ns202";
String contentOperatingSystem = "win7";
boolean statusIsValid = true;
boolean statusIsDeleted = false;
String imageShortDescrption = "EIN SUPER TOLLES IMAGE!";
String imageLongDescription = "Lorem ipsum dolor sit amet.";
ImageData imageData = new ImageData(uuid.toString(), version, imageName,
imageCreateTime, imageUpdateTime, imageOwner, contentOperatingSystem,
statusIsValid, statusIsDeleted, imageShortDescrption, imageLongDescription);
System.out.println("Created imageData");
FtpCredentials ftpCredentials = client.submitImage(imageData, data);
System.out.println("Got FTP credentials. User: " + ftpCredentials.username + ", password: " + ftpCredentials.password);
FTPClient FtpClient = new FTPClient();
String host = "localhost";
int port = 2221;
String user = ftpCredentials.username;
String password = ftpCredentials.password;
String fileName = "/home/nils/file_to_upload.bin";
try {
FtpClient.connect(host, port);
System.out.println("Connected to " + host + ":" + port + ". Reply code: " + FtpClient.getReplyCode());
if ( !FTPReply.isPositiveCompletion( FtpClient.getReplyCode() ) ) {
ConnectException ce = new ConnectException("No positive reply code.");
throw ce;
}
if ( !FtpClient.login(user, password) ) {
ConnectException ce = new ConnectException("Could not login.");
throw ce;
}
System.out.println("Logged in with user: " + user);
FtpClient.setFileType(FTP.BINARY_FILE_TYPE);
FtpClient.enterLocalPassiveMode();
System.out.println("Entered PASSIVE MODE");
InputStream input = new FileInputStream(fileName);
System.out.print("Starting file upload ... ");
FtpClient.storeFile("xcvb.vmdk", input);
System.out.println("done.");
FtpClient.noop();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (FtpClient.isConnected()) {
try {
FtpClient.logout();
FtpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (TException e) {
e.printStackTrace();
}
}
}
|