diff --git a/docs-web-common/pom.xml b/docs-web-common/pom.xml index 12b041f2..7d277514 100644 --- a/docs-web-common/pom.xml +++ b/docs-web-common/pom.xml @@ -100,6 +100,12 @@ test + + org.glassfish.jersey.media + jersey-media-multipart + test + + diff --git a/docs-web-common/src/test/java/com/sismics/docs/rest/util/ClientUtil.java b/docs-web-common/src/test/java/com/sismics/docs/rest/util/ClientUtil.java index ee6c733d..de999f55 100644 --- a/docs-web-common/src/test/java/com/sismics/docs/rest/util/ClientUtil.java +++ b/docs-web-common/src/test/java/com/sismics/docs/rest/util/ClientUtil.java @@ -1,13 +1,20 @@ package com.sismics.docs.rest.util; +import com.google.common.io.Resources; import com.sismics.util.filter.TokenBasedSecurityFilter; +import org.glassfish.jersey.media.multipart.FormDataMultiPart; +import org.glassfish.jersey.media.multipart.MultiPartFeature; +import org.glassfish.jersey.media.multipart.file.StreamDataBodyPart; import javax.json.JsonObject; import javax.ws.rs.client.Entity; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Form; +import javax.ws.rs.core.MediaType; import javax.ws.rs.core.NewCookie; import javax.ws.rs.core.Response; +import java.io.IOException; +import java.io.InputStream; /** * REST client utilities. @@ -140,4 +147,19 @@ public class ClientUtil { } return authToken; } + + public String addFileToDocument(String file, String filename, String token, String documentId) throws IOException { + try (InputStream is = Resources.getResource(file).openStream()) { + StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, filename); + try (FormDataMultiPart multiPart = new FormDataMultiPart()) { + JsonObject json = resource + .register(MultiPartFeature.class) + .path("/file").request() + .cookie(TokenBasedSecurityFilter.COOKIE_NAME, token) + .put(Entity.entity(multiPart.field("id", documentId).bodyPart(streamDataBodyPart), + MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); + return json.getString("id"); + } + } + } } diff --git a/docs-web/src/test/java/com/sismics/docs/rest/TestDocumentResource.java b/docs-web/src/test/java/com/sismics/docs/rest/TestDocumentResource.java index 071051ad..ff06e479 100644 --- a/docs-web/src/test/java/com/sismics/docs/rest/TestDocumentResource.java +++ b/docs-web/src/test/java/com/sismics/docs/rest/TestDocumentResource.java @@ -85,21 +85,9 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document2Id); // Add a file - String file1Id; - try (InputStream is = Resources.getResource("file/Einstein-Roosevelt-letter.png").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "Einstein-Roosevelt-letter.png"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, document1Token) - .put(Entity.entity(multiPart.field("id", document1Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file1Id = json.getString("id"); - Assert.assertNotNull(file1Id); - } - } - + String file1Id = clientUtil.addFileToDocument("file/Einstein-Roosevelt-letter.png", + "Einstein-Roosevelt-letter.png", document1Token, document1Id); + // Share this document target().path("/share").request() .cookie(TokenBasedSecurityFilter.COOKIE_NAME, document1Token) @@ -147,21 +135,9 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document3Id); // Add a file - String file3Id; - try (InputStream is = Resources.getResource("file/Einstein-Roosevelt-letter.png").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "Einstein-Roosevelt-letter.png"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, document3Token) - .put(Entity.entity(multiPart.field("id", document3Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file3Id = json.getString("id"); - Assert.assertNotNull(file3Id); - } - } - + clientUtil.addFileToDocument("file/Einstein-Roosevelt-letter.png", + "Einstein-Roosevelt-letter.png", document3Token, document3Id); + // List all documents from document3 json = target().path("/document/list") .queryParam("sort_column", 3) @@ -392,21 +368,8 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document1Id); // Add a PDF file - String file1Id; - try (InputStream is = Resources.getResource("file/document.odt").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "document.odt"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, documentOdtToken) - .put(Entity.entity(multiPart.field("id", document1Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file1Id = json.getString("id"); - Assert.assertNotNull(file1Id); - } - } - + String file1Id = clientUtil.addFileToDocument("file/document.odt", "document.odt", documentOdtToken, document1Id); + // Search documents by query in full content json = target().path("/document/list") .queryParam("search", "full:ipsum") @@ -451,21 +414,8 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document1Id); // Add a PDF file - String file1Id; - try (InputStream is = Resources.getResource("file/document.docx").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "document.docx"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, documentDocxToken) - .put(Entity.entity(multiPart.field("id", document1Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file1Id = json.getString("id"); - Assert.assertNotNull(file1Id); - } - } - + String file1Id = clientUtil.addFileToDocument("file/document.docx", "document.docx", documentDocxToken, document1Id); + // Search documents by query in full content json = target().path("/document/list") .queryParam("search", "full:dolor") @@ -510,21 +460,8 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document1Id); // Add a PDF file - String file1Id; - try (InputStream is = Resources.getResource("file/wikipedia.pdf").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "wikipedia.pdf"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, documentPdfToken) - .put(Entity.entity(multiPart.field("id", document1Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file1Id = json.getString("id"); - Assert.assertNotNull(file1Id); - } - } - + String file1Id = clientUtil.addFileToDocument("file/wikipedia.pdf", "wikipedia.pdf", documentPdfToken, document1Id); + // Search documents by query in full content json = target().path("/document/list") .queryParam("search", "full:vrandecic") @@ -569,20 +506,7 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document1Id); // Add a plain text file - String file1Id; - try (InputStream is = Resources.getResource("file/document.txt").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "document.txt"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, documentPlainToken) - .put(Entity.entity(multiPart.field("id", document1Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file1Id = json.getString("id"); - Assert.assertNotNull(file1Id); - } - } + String file1Id = clientUtil.addFileToDocument("file/document.txt", "document.txt", documentPlainToken, document1Id); // Search documents by query in full content json = target().path("/document/list") @@ -628,20 +552,7 @@ public class TestDocumentResource extends BaseJerseyTest { Assert.assertNotNull(document1Id); // Add a video file - String file1Id; - try (InputStream is = Resources.getResource("file/video.webm").openStream()) { - StreamDataBodyPart streamDataBodyPart = new StreamDataBodyPart("file", is, "video.webm"); - try (FormDataMultiPart multiPart = new FormDataMultiPart()) { - json = target() - .register(MultiPartFeature.class) - .path("/file").request() - .cookie(TokenBasedSecurityFilter.COOKIE_NAME, documentPlainToken) - .put(Entity.entity(multiPart.field("id", document1Id).bodyPart(streamDataBodyPart), - MediaType.MULTIPART_FORM_DATA_TYPE), JsonObject.class); - file1Id = json.getString("id"); - Assert.assertNotNull(file1Id); - } - } + String file1Id = clientUtil.addFileToDocument("file/video.webm", "video.webm", documentPlainToken, document1Id); // Search documents by query in full content json = target().path("/document/list")