package org.peerbox.server.servlets; import static com.jayway.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.junit.Test; import org.peerbox.server.servlets.messages.DeleteMessage; import org.peerbox.server.servlets.messages.ServerReturnCode; import org.peerbox.server.servlets.messages.ShareMessage; import com.jayway.restassured.http.ContentType; /** * This test class tests a request where a multiple paths are expected. * For instance, a one or several paths are expected in a delete message (see {@link DeleteMessage}). * Thus, the corresponding JSON request is different compared to {@link ServletTestSinglePath}. * * @author albrecht * */ public class ServletTestMultiplePaths extends ServletTest { @Test public void testSingleUrl() { // single url instead of array String message = String.format( "{\"paths\":\"%s\"}", "/tmp/testpath/file1"); given(). contentType(ContentType.JSON). content(message). post(url). then(). assertThat().statusCode(HttpServletResponse.SC_BAD_REQUEST). assertThat().contentType(ContentType.JSON). assertThat().body("returnCode", equalTo(ServerReturnCode.DESERIALIZE_ERROR.ordinal())); } @Test public void testPostWrongJson() { // files instead of paths String msg = String.format( "{files:[\"%s\", \"%s\"]", "/tmp/PeerWasp_test/f1", "/tmp/PeerWasp_test/f2"); given(). contentType(ContentType.JSON). content(msg). post(url). then(). assertThat().statusCode(HttpServletResponse.SC_BAD_REQUEST). assertThat().contentType(ContentType.JSON). assertThat().body("returnCode", equalTo(ServerReturnCode.DESERIALIZE_ERROR.ordinal())); } @Test public void testPostWrongMsg() { // send a wrong message, i.e. one with 1 url ShareMessage msg = new ShareMessage(); Path folder = Paths.get("/tmp/PeerWasp_test/f1"); msg.setPath(folder); given(). contentType(ContentType.JSON). content(msg). post(url). then(). assertThat().statusCode(HttpServletResponse.SC_BAD_REQUEST). assertThat().contentType(ContentType.JSON). assertThat().body("returnCode", equalTo(ServerReturnCode.REQUEST_EXCEPTION.ordinal())); } @Test public void testPostFiles() { DeleteMessage msg = new DeleteMessage(); List<Path> files = new ArrayList<>(); files.add(Paths.get("/tmp/PeerWasp_Test/folder")); files.add(Paths.get("/tmp/PeerWasp_Test/file")); msg.setPaths(files); given(). contentType(ContentType.JSON). content(msg). post(url). then(). assertThat().statusCode(HttpServletResponse.SC_OK). assertThat().contentType(ContentType.JSON); } @Test public void testPostFileAndAdditionalParameter() { String message = String.format("{\"paths\":[\"%s\"], \"code\":4}", "/tmp/PeerWasp_Test/file"); given(). contentType(ContentType.JSON). content(message). post(url). then(). assertThat().statusCode(HttpServletResponse.SC_OK). assertThat().contentType(ContentType.JSON); } }