Package slash.navigation.catalog.client

Source Code of slash.navigation.catalog.client.FileIT

/*
  You may freely copy, distribute, modify and use this class as long
  as the original author attribution remains intact.  See message
  below.

  Copyright (C) 2007 Christian Pesch. All Rights Reserved.
*/
package slash.navigation.catalog.client;

import org.junit.Test;
import slash.navigation.rest.Delete;
import slash.navigation.rest.Get;
import slash.navigation.rest.HttpRequest;
import slash.navigation.rest.Post;
import slash.navigation.rest.Put;
import slash.navigation.rest.SimpleCredentials;

import java.io.File;
import java.io.IOException;

import static java.lang.Integer.MAX_VALUE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

public class FileIT extends RouteCatalogClientBase {

    private Get readFile(int key) {
        return new Get(FILES_URL + key + "/");
    }

    private Put updateFile(int key, String fileName, String authenticationUserName, String authenticationPassword) throws IOException {
        Put request = new Put(FILES_URL + key + "/", new SimpleCredentials(authenticationUserName, authenticationPassword));
        request.addFile("file", new File(TEST_PATH + fileName));
        return request;
    }

    private Put updateFile(int key, String fileName) throws IOException {
        return updateFile(key, fileName, USERNAME, PASSWORD);
    }

    private Delete deleteFile(int key,  String authenticationUserName, String authenticationPassword) {
        return new Delete(FILES_URL + key + "/", new SimpleCredentials(authenticationUserName, authenticationPassword));
    }

    private Delete deleteFile(int key) throws IOException {
        return deleteFile(key, USERNAME, PASSWORD);
    }


    @Test
    public void testCreate() throws Exception {
        Post request = createFile("filestest.gpx");
        String result = request.executeAsString();
        assertTrue(result.contains("file"));
        assertTrue(result.contains("created"));
        String location = request.getLocation();
        assertTrue(location.contains("/catalog/files/"));
        assertEquals(201, request.getStatusCode());
        assertTrue(request.isSuccessful());
    }

    @Test
    public void testCreateWithNotExistingUser() throws Exception {
        HttpRequest request = createFile("filestest.gpx", "user-does-not-exist", PASSWORD);
        assertNull(request.executeAsString());
        assertEquals(401, request.getStatusCode());
        assertFalse(request.isSuccessful());
        assertTrue(request.isUnAuthorized());
    }

    @Test
    public void testCreateWithWrongPassword() throws Exception {
        HttpRequest request = createFile("filestest.gpx", USERNAME, "password-is-wrong");
        assertNull(request.executeAsString());
        assertEquals(401, request.getStatusCode());
        assertFalse(request.isSuccessful());
        assertTrue(request.isUnAuthorized());
    }

    @Test
    public void testCreateCheckIncreasingIds() throws Exception {
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        Post request2 = createFile("filestest.gpx");
        request2.executeAsString();
        String result2 = request2.getLocation();
        int key1 = parseFileKey(result1);
        int key2 = parseFileKey(result2);
        assertEquals(key1 + 1, key2);
    }

    @Test
    public void testRead() throws Exception {
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String location1 = request1.getLocation();
        assertNotNull(location1);
        int key = parseFileKey(location1);
        HttpRequest request2 = readFile(key);
        String location2 = request2.executeAsString();
        assertEquals(200, request2.getStatusCode());
        assertTrue(request2.isSuccessful());
        assertEquals(readFileToString("filestest.gpx"), location2);
    }

    @Test
    public void testReadNotExisting() throws Exception {
        HttpRequest request = readFile(MAX_VALUE);
        assertNotNull(request.executeAsString());
        assertEquals(404, request.getStatusCode());
        assertFalse(request.isSuccessful());
    }

    @Test
    public void testUpdate() throws Exception {
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        int key = parseFileKey(result1);
        HttpRequest request2 = updateFile(key, "filestest.bcr");
        String result2 = request2.executeAsString();
        assertEquals("file " + key + " updated", result2);
        assertEquals(200, request2.getStatusCode());
        assertTrue(request2.isSuccessful());
        HttpRequest request3 = readFile(key);
        String result3 = request3.executeAsString();
        assertEquals(200, request3.getStatusCode());
        assertTrue(request3.isSuccessful());
        String expected3 = readFileToString("filestest.bcr");
        assertEquals(expected3.length(), result3.length());
        assertEquals(expected3, result3);
    }

    @Test
    public void testUpdateWithWrongPassword() throws Exception {
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        int key = parseFileKey(result1);
        HttpRequest request2 = updateFile(key, "filestest.bcr", "user-does-not-exist", "password-is-wrong");
        assertNull(request2.executeAsString());
        assertEquals(401, request2.getStatusCode());
        assertFalse(request2.isSuccessful());
        assertTrue(request2.isUnAuthorized());
    }

    @Test
    public void testUpdateNotMyRoute() throws Exception {
        createUser("userstest.gpx").executeAsString();
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        int key = parseFileKey(result1);
        HttpRequest request2 = updateFile(key, "filestest.bcr", "ivan", "secret");
        assertNotNull(request2.executeAsString());
        assertEquals(403, request2.getStatusCode());
        assertFalse(request2.isSuccessful());
        assertTrue(request2.isForbidden());
    }

    @Test
    public void testDelete() throws Exception {
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        int key = parseFileKey(result1);
        HttpRequest request2 = deleteFile(key);
        String result2 = request2.executeAsString();
        assertEquals("file " + key + " deleted", result2);
        assertEquals(200, request2.getStatusCode());
        assertTrue(request2.isSuccessful());
        HttpRequest request3 = readFile(key);
        String result3 = request3.executeAsString();
        assertNotNull(result3);
        assertEquals(404, request3.getStatusCode());
        assertFalse(request3.isSuccessful());
    }

    @Test
    public void testDeleteWithWrongPassword() throws Exception {
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        int key = parseFileKey(result1);
        HttpRequest request2 = deleteFile(key, "user-does-not-exist", "password-is-wrong");
        assertNull(request2.executeAsString());
        assertEquals(401, request2.getStatusCode());
        assertFalse(request2.isSuccessful());
        assertTrue(request2.isUnAuthorized());
    }

    @Test
    public void testDeleteNotMyRoute() throws Exception {
        createUser("userstest.gpx").executeAsString();
        Post request1 = createFile("filestest.gpx");
        request1.executeAsString();
        String result1 = request1.getLocation();
        int key = parseFileKey(result1);
        HttpRequest request2 = deleteFile(key, "ivan", "secret");
        assertNotNull(request2.executeAsString());
        assertEquals(403, request2.getStatusCode());
        assertFalse(request2.isSuccessful());
        assertTrue(request2.isForbidden());
    }
}
TOP

Related Classes of slash.navigation.catalog.client.FileIT

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.