summaryrefslogblamecommitdiffstats
path: root/src/test/java/org/openslx/imagemaster/AppTest.java
blob: 5b5988bb14dc3f473dfc00b9cf89bf28c024981c (plain) (tree)
1
2
3
4
5
6
7
8
9
10

                                



                                 



                                       
 



                                 


                                            





                                                       
                                                      
                                                               

                                                              


                                                        






























                                              
    
























                                                                                                      

                                                               



                 
                                        
       
                                  














                                                                           
        
             







                                                                                                          




















                                                                                                                    

























                                                                                                                                               
                                                                        














                                                                       

                                            

                 
 
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();
		}
    }
}