car.PasserelleRestTest.java Source code

Java tutorial

Introduction

Here is the source code for car.PasserelleRestTest.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package car;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import static javax.ws.rs.core.HttpHeaders.USER_AGENT;
import javax.ws.rs.core.Response;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author rkouere
 */
public class PasserelleRestTest {
    String form = "<form method='POST' action='http://localhost:8080/rest/api/rest/upload' enctype='multipart/form-data'>\n"
            + "<input type='file' name='file'><br> nom de la destination : <input type='text' name='name' /><br />\n"
            + "<input type='submit' value='Tlverse'>\n" + "</form> "
            + "<form method='POST' action='http://localhost:8080/rest/api/rest/delete'><input type='text' name='name' />"
            + "<input type='submit' value='Delete'></form>";

    /* besoin pour le client ftp */
    FTPClient ftp = new FTPClient();
    FTPClientConfig config = new FTPClientConfig();
    String currentDirectory = null;
    FTPFile[] files = null;

    public PasserelleRestTest() throws IOException {
        this.currentDirectory = new String();

        ftp.configure(config);
        ftp.connect("127.0.0.1", 4000);
        /* we make sure we are inputStream passive mode */
        //ftp.enterLocalPassiveMode();
        /* we check the connection is OK */
        int replyCode = ftp.getReplyCode();
        if (!FTPReply.isPositiveCompletion(replyCode)) {
            System.out.println("[passerelle] : Connection failed");
            return;
        } else {
            System.out.println("[passerelle] : Connection success");
        }

        boolean login = ftp.login("nico", "password");
        if (!login) {
            ftp.disconnect();
            System.out.println("Could not login to the server");
            return;
        } else {
            System.out.print("[passerelle]: " + ftp.getReplyString());
        }
        /* we set the current directory */
        this.currentDirectory = ftp.printWorkingDirectory();
        System.out.println("current directory = " + this.currentDirectory);
        this.files = ftp.listFiles(this.currentDirectory);
    }

    @BeforeClass
    public static void setUpClass() {

    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    private String sendRequest(String url) throws MalformedURLException, IOException {
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        // make sure it is a get
        con.setRequestMethod("GET");

        //add request header
        con.setRequestProperty("User-Agent", USER_AGENT);

        /* le rponse est renvoy sous forme de stream */
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        /* var temporaire */
        String inputLine;
        StringBuffer response = new StringBuffer();

        /* recuperation du flux de donnes */
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        //print result
        return response.toString();
    }

    /**
      * test de la mthode list directory
      * Test que tous les fichiers prsent dans le dossier du ftp sont eux aussi prsent
      * 
      */
    @Test
    public void listDirectory() throws Exception {
        /* verifie que le formulaire ets bien prsent */
        String resp = this.sendRequest("http://localhost:8080/rest/api/rest/list/");

        /* on recupere les fichiers prsent dans le dossier et on verifie qu'ils sont tous renvoy par la paserelle */
        for (FTPFile file : this.files) {
            if (!file.getName().equals("."))
                if (!file.getName().equals(".."))
                    assertTrue(resp.contains(file.getName()));
        }
        /* on verifie que les rponses ne sont pas toujours oui */
        assertFalse(resp.contains("grrr.txt"));

    }

    /**
     * Test of downloadFile method, of class PasserelleRest.
     */
    @Test
    public void testDownloadFileOK() throws Exception {
        URL obj = new URL("http://localhost:8080/rest/api/rest/list/" + this.files[2].getName());
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        // make sure it is a get
        con.setRequestMethod("GET");

        //add request header
        con.setRequestProperty("User-Agent", USER_AGENT);
        assertTrue(con.getResponseCode() == 200);
        con.disconnect();

    }

    @Test
    public void testDownloadFileKO() throws Exception {
        URL obj = new URL("http://localhost:8080/rest/api/rest/list/greterssfet.lkjsh");
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();

        // make sure it is a get
        con.setRequestMethod("GET");

        //add request header
        con.setRequestProperty("User-Agent", USER_AGENT);
        assertTrue(con.getResponseCode() == 404);
        con.disconnect();

    }

}