diff --git a/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java b/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java index 47541b2c7f..88002a37e2 100644 --- a/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java @@ -536,7 +536,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi File txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt"); MultiPartBuilder.MultiPartRequest reqBody = MultiPartBuilder.create() - .setFileData(new MultiPartBuilder.FileData(fileName, txtFile, MimetypeMap.MIMETYPE_TEXT_PLAIN, encoding)) + .setFileData(new MultiPartBuilder.FileData(fileName, txtFile)) .setProperties(props) .build(); @@ -554,7 +554,7 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi { ByteArrayInputStream inputStream = new ByteArrayInputStream(textContent.getBytes()); File txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt"); - BinaryPayload payload = new BinaryPayload(txtFile, MimetypeMap.MIMETYPE_TEXT_PLAIN); + BinaryPayload payload = new BinaryPayload(txtFile); HttpResponse response = putBinary(getNodeContentUrl(contentId), userId, payload, null, parameters, 200); return RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); diff --git a/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java b/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java index 25902cb9bb..48bcb3795f 100644 --- a/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java @@ -681,13 +681,13 @@ public class NodeApiTest extends AbstractBaseApiTest d1.setName(contentName); d1.setNodeType(TYPE_CM_CONTENT); - ContentInfo ci = new ContentInfo(); - ci.setMimeType("text/plain"); - ci.setMimeTypeName("Plain Text"); - ci.setSizeInBytes(44L); - ci.setEncoding("ISO-8859-1"); + ContentInfo ciExpected = new ContentInfo(); + ciExpected.setMimeType("text/plain"); + ciExpected.setMimeTypeName("Plain Text"); + ciExpected.setSizeInBytes(44L); + ciExpected.setEncoding("ISO-8859-1"); - d1.setContent(ci); + d1.setContent(ciExpected); d1.setCreatedByUser(expectedUser); d1.setModifiedByUser(expectedUser); @@ -808,6 +808,137 @@ public class NodeApiTest extends AbstractBaseApiTest getSingle(NodesEntityResource.class, user1, Nodes.PATH_MY, null, 404); // Not found } + /** + * Tests guess mimetype & guess encoding when uploading file/content (create or update) - also empty file/content + *
POST:
+ * {@literalPUT:
+ * {@literalPOST:
@@ -826,7 +957,7 @@ public class NodeApiTest extends AbstractBaseApiTest final int numOfNodes = pagingResult.getCount(); MultiPartBuilder multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)); + .setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Try to upload into a non-existent folder @@ -894,7 +1025,7 @@ public class NodeApiTest extends AbstractBaseApiTest final String fileName1 = "quick-1.txt"; final File file1 = getResourceFile(fileName1); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(null, file1, null)) + .setFileData(new FileData(null, file1)) .build(); response = post(getNodeChildrenUrl(Nodes.PATH_MY), user1, reqBody.getBody(), null, reqBody.getContentType(), 201); document = jacksonUtil.parseEntry(response.getJsonResponse(), Document.class); @@ -907,7 +1038,7 @@ public class NodeApiTest extends AbstractBaseApiTest final String fileName2b = "quick-2b.txt"; final File file2 = getResourceFile(fileName2); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName2b, file2, MimetypeMap.MIMETYPE_BINARY)) + .setFileData(new FileData(fileName2b, file2)) .build(); response = post(getNodeChildrenUrl(Nodes.PATH_MY), user1, reqBody.getBody(), null, reqBody.getContentType(), 201); document = jacksonUtil.parseEntry(response.getJsonResponse(), Document.class); @@ -915,12 +1046,13 @@ public class NodeApiTest extends AbstractBaseApiTest assertEquals(fileName2b, document.getName()); assertEquals(MimetypeMap.MIMETYPE_TEXT_PLAIN, document.getContent().getMimeType()); + // User2 tries to upload a new file into the user1's home folder. response = getSingle(NodesEntityResource.class, user1, Nodes.PATH_MY, null, 200); Folder user1Home = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); final File file3 = getResourceFile(fileName2); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName2, file3, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(fileName2, file3)) .build(); post(getNodeChildrenUrl(user1Home.getId()), user2, reqBody.getBody(), null, reqBody.getContentType(), 403); @@ -938,7 +1070,7 @@ public class NodeApiTest extends AbstractBaseApiTest // Test unsupported node type reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName2, file2, null)) + .setFileData(new FileData(fileName2, file2)) .setAutoRename(true) .setNodeType("cm:link") .build(); @@ -966,7 +1098,7 @@ public class NodeApiTest extends AbstractBaseApiTest { // quick.pdf size is about 23 KB reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)) + .setFileData(new FileData(fileName, file)) .setAutoRename(true) .build(); @@ -1002,7 +1134,7 @@ public class NodeApiTest extends AbstractBaseApiTest final int numOfNodes = pagingResult.getCount(); MultiPartBuilder multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, null)); + .setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Try to upload response = post(getNodeChildrenUrl(folderA_id), userOneN1.getId(), reqBody.getBody(), null, reqBody.getContentType(), 201); @@ -1039,7 +1171,7 @@ public class NodeApiTest extends AbstractBaseApiTest final String fileName2 = "quick-2.txt"; final File file2 = getResourceFile(fileName2); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName2, file2, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(fileName2, file2)) .build(); // userTwoN1 tries to upload a new file into the folderA of userOneN1 post(getNodeChildrenUrl(folderA_id), userTwoN1.getId(), reqBody.getBody(), null, reqBody.getContentType(), 403); @@ -1061,7 +1193,7 @@ public class NodeApiTest extends AbstractBaseApiTest props.put("cm:title", "test title"); props.put("cm:description", "test description"); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName2, file2, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(fileName2, file2)) .setAutoRename(true) .setProperties(props) .build(); @@ -1082,7 +1214,7 @@ public class NodeApiTest extends AbstractBaseApiTest props = new HashMap<>(1); props.put("unknownPrefix" + System.currentTimeMillis() + ":description", "test description"); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName2, file2, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(fileName2, file2)) .setAutoRename(true) .setProperties(props) .build(); @@ -1092,7 +1224,7 @@ public class NodeApiTest extends AbstractBaseApiTest // Test relativePath multi-part field. // Any folders in the relativePath that do not exist, are created before the content is created. multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(fileName, file)) .setRelativePath("X/Y/Z"); reqBody = multiPartBuilder.build(); @@ -1727,9 +1859,6 @@ public class NodeApiTest extends AbstractBaseApiTest Document d1 = new Document(); d1.setName("d1.txt"); d1.setNodeType(TYPE_CM_CONTENT); - ContentInfo ci = new ContentInfo(); - ci.setMimeType("text/plain"); - d1.setContent(ci); response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201); Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); @@ -2100,9 +2229,6 @@ public class NodeApiTest extends AbstractBaseApiTest Document d1 = new Document(); d1.setName("d1.txt"); d1.setNodeType(TYPE_CM_CONTENT); - ContentInfo ci = new ContentInfo(); - ci.setMimeType("text/plain"); - d1.setContent(ci); HttpResponse response = post(getNodeChildrenUrl(f1Id), user1, toJsonAsStringNonNull(d1), 201); Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); @@ -2281,9 +2407,6 @@ public class NodeApiTest extends AbstractBaseApiTest Document d1 = new Document(); d1.setName("d1.txt"); d1.setNodeType(TYPE_CM_CONTENT); - ContentInfo ci = new ContentInfo(); - ci.setMimeType("text/plain"); - d1.setContent(ci); // create empty file HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201); @@ -2297,9 +2420,12 @@ public class NodeApiTest extends AbstractBaseApiTest d1.setCreatedByUser(expectedUser); d1.setModifiedByUser(expectedUser); - d1.getContent().setMimeTypeName("Plain Text"); - d1.getContent().setSizeInBytes(0L); - d1.getContent().setEncoding("UTF-8"); + ContentInfo ciExpected = new ContentInfo(); + ciExpected.setMimeType("text/plain"); + ciExpected.setMimeTypeName("Plain Text"); + ciExpected.setSizeInBytes(0L); + ciExpected.setEncoding("UTF-8"); + d1.setContent(ciExpected); d1.expected(documentResp); @@ -2324,7 +2450,7 @@ public class NodeApiTest extends AbstractBaseApiTest d2.setCreatedByUser(expectedUser); d2.setModifiedByUser(expectedUser); - ContentInfo ciExpected = new ContentInfo(); + ciExpected = new ContentInfo(); ciExpected.setMimeType("text/plain"); ciExpected.setMimeTypeName("Plain Text"); ciExpected.setSizeInBytes(0L); @@ -2443,9 +2569,6 @@ public class NodeApiTest extends AbstractBaseApiTest Document d1 = new Document(); d1.setName("d1.txt"); d1.setNodeType(TYPE_CM_CONTENT); - ContentInfo ci = new ContentInfo(); - ci.setMimeType("text/plain"); - d1.setContent(ci); HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201); Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); @@ -2459,9 +2582,12 @@ public class NodeApiTest extends AbstractBaseApiTest d1.setCreatedByUser(expectedUser); d1.setModifiedByUser(expectedUser); - d1.getContent().setMimeTypeName("Plain Text"); - d1.getContent().setSizeInBytes(0L); - d1.getContent().setEncoding("UTF-8"); + ContentInfo ciExpected = new ContentInfo(); + ciExpected.setMimeType("text/plain"); + ciExpected.setMimeTypeName("Plain Text"); + ciExpected.setSizeInBytes(0L); + ciExpected.setEncoding("UTF-8"); + d1.setContent(ciExpected); d1.expected(documentResp); @@ -2857,9 +2983,6 @@ public class NodeApiTest extends AbstractBaseApiTest Document d1 = new Document(); d1.setName("d1.txt"); d1.setNodeType(TYPE_CM_CONTENT); - ContentInfo ci = new ContentInfo(); - ci.setMimeType("text/plain"); - d1.setContent(ci); // create *empty* text file - as of now, versioning is not enabled by default HttpResponse response = post(getNodeChildrenUrl(myNodeId), user1, toJsonAsStringNonNull(d1), 201); @@ -3170,7 +3293,7 @@ public class NodeApiTest extends AbstractBaseApiTest File file = getResourceFile(fileName); MultiPartBuilder multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_TEXT_PLAIN)); + .setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Upload text content @@ -3233,7 +3356,7 @@ public class NodeApiTest extends AbstractBaseApiTest byte[] originalBytes = Files.readAllBytes(Paths.get(file.getAbsolutePath())); multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)); + .setFileData(new FileData(fileName, file)); reqBody = multiPartBuilder.build(); // Upload binary content diff --git a/source/test-java/org/alfresco/rest/api/tests/RenditionsTest.java b/source/test-java/org/alfresco/rest/api/tests/RenditionsTest.java index d685d700b4..e75b36beeb 100644 --- a/source/test-java/org/alfresco/rest/api/tests/RenditionsTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/RenditionsTest.java @@ -121,7 +121,7 @@ public class RenditionsTest extends AbstractBaseApiTest // Create multipart request String fileName = "quick.pdf"; File file = getResourceFile(fileName); - MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)); + MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Upload quick.pdf file into 'folder' @@ -259,7 +259,7 @@ public class RenditionsTest extends AbstractBaseApiTest // Create multipart request String fileName = "quick.pdf"; File file = getResourceFile(fileName); - MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)); + MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Upload quick.pdf file into 'folder' @@ -307,7 +307,7 @@ public class RenditionsTest extends AbstractBaseApiTest String jpgFileName = "quick.jpg"; File jpgFile = getResourceFile(fileName); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(jpgFileName, jpgFile, MimetypeMap.MIMETYPE_IMAGE_JPEG)) + .setFileData(new FileData(jpgFileName, jpgFile)) .build(); // Upload quick.jpg file into 'folder' @@ -341,7 +341,7 @@ public class RenditionsTest extends AbstractBaseApiTest // Create multipart request String fileName = "quick.pdf"; File file = getResourceFile(fileName); - MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)); + MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Upload quick.pdf file into 'folder' @@ -419,7 +419,7 @@ public class RenditionsTest extends AbstractBaseApiTest String content = "The quick brown fox jumps over the lazy dog."; file = TempFileProvider.createTempFile(new ByteArrayInputStream(content.getBytes()), getClass().getSimpleName(), ".bin"); - multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData("binaryFileName", file, MimetypeMap.MIMETYPE_BINARY)); + multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData("binaryFileName", file)); reqBody = multiPartBuilder.build(); response = post(getNodeChildrenUrl(folder_Id), userOneN1.getId(), reqBody.getBody(), null, reqBody.getContentType(), 201); Document binaryDocument = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); @@ -435,7 +435,7 @@ public class RenditionsTest extends AbstractBaseApiTest // Create multipart request String txtFileName = "quick-1.txt"; File txtFile = getResourceFile(fileName); - reqBody = MultiPartBuilder.create().setFileData(new FileData(txtFileName, txtFile, MimetypeMap.MIMETYPE_TEXT_PLAIN)).build(); + reqBody = MultiPartBuilder.create().setFileData(new FileData(txtFileName, txtFile)).build(); // Upload quick-1.txt file into 'folder' response = post(getNodeChildrenUrl(folder_Id), userOneN1.getId(), reqBody.getBody(), null, reqBody.getContentType(), 201); @@ -476,7 +476,7 @@ public class RenditionsTest extends AbstractBaseApiTest String fileName = "quick.pdf"; File file = getResourceFile(fileName); MultiPartRequest reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)) + .setFileData(new FileData(fileName, file)) .setRenditions(Collections.singletonList(renditionName)) .build(); @@ -498,7 +498,7 @@ public class RenditionsTest extends AbstractBaseApiTest fileName = "farmers_markets_list_2003.doc"; file = getResourceFile(fileName); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_WORD)) + .setFileData(new FileData(fileName, file)) .setRenditions(Collections.singletonList(renditionName)) .build(); @@ -541,7 +541,7 @@ public class RenditionsTest extends AbstractBaseApiTest // Currently we do not support multiple rendition requests on create reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)) + .setFileData(new FileData(fileName, file)) .setAutoRename(true) .setRenditions(Arrays.asList(new String[]{"doclib,imgpreview"})) .build(); @@ -550,7 +550,7 @@ public class RenditionsTest extends AbstractBaseApiTest // Unknown rendition reqBody = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)) + .setFileData(new FileData(fileName, file)) .setAutoRename(true) .setRenditions(Arrays.asList(new String[]{"unknown"})) .build(); @@ -566,7 +566,7 @@ public class RenditionsTest extends AbstractBaseApiTest String txtFileName = "quick-1.txt"; File txtFile = getResourceFile(fileName); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(txtFileName, txtFile, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(txtFileName, txtFile)) .setRenditions(Arrays.asList(new String[]{"doclib"})) .build(); @@ -594,7 +594,7 @@ public class RenditionsTest extends AbstractBaseApiTest String fileName = "quick.pdf"; File file = getResourceFile(fileName); MultiPartBuilder multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)); + .setFileData(new FileData(fileName, file)); MultiPartRequest reqBody = multiPartBuilder.build(); // Upload quick.pdf file into 'folder' @@ -701,7 +701,7 @@ public class RenditionsTest extends AbstractBaseApiTest // the old fileName and setting overwrite field to true file = getResourceFile("quick-2.pdf"); multiPartBuilder = MultiPartBuilder.create() - .setFileData(new FileData(fileName, file, MimetypeMap.MIMETYPE_PDF)) + .setFileData(new FileData(fileName, file)) .setOverwrite(true); reqBody = multiPartBuilder.build(); @@ -731,7 +731,7 @@ public class RenditionsTest extends AbstractBaseApiTest InputStream inputStream = new ByteArrayInputStream("The quick brown fox jumps over the lazy dog".getBytes()); file = TempFileProvider.createTempFile(inputStream, "RenditionsTest-", ".abcdef"); reqBody = MultiPartBuilder.create() - .setFileData(new FileData(file.getName(), file, MimetypeMap.MIMETYPE_TEXT_PLAIN)) + .setFileData(new FileData(file.getName(), file)) .build(); // Upload temp file into 'folder' response = post(getNodeChildrenUrl(folder_Id), userOneN1.getId(), reqBody.getBody(), null, reqBody.getContentType(), 201); diff --git a/source/test-resources/publicapi/upload/example-1.txt b/source/test-resources/publicapi/upload/example-1.txt new file mode 100644 index 0000000000..d8aa4e9736 --- /dev/null +++ b/source/test-resources/publicapi/upload/example-1.txt @@ -0,0 +1,3 @@ +The quick brown fox jumps over the lazy dog +The quick brown fox jumps over the lazy dog +The quick brown fox jumps over the lazy dog \ No newline at end of file diff --git a/source/test-resources/publicapi/upload/example-1.xml b/source/test-resources/publicapi/upload/example-1.xml new file mode 100644 index 0000000000..67f9ad605c --- /dev/null +++ b/source/test-resources/publicapi/upload/example-1.xml @@ -0,0 +1,6 @@ + +