diff --git a/remote-api/src/test/java/org/alfresco/rest/api/tests/SharedLinkApiTest.java b/remote-api/src/test/java/org/alfresco/rest/api/tests/SharedLinkApiTest.java index 3faadffb97..ffd018461e 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/tests/SharedLinkApiTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/tests/SharedLinkApiTest.java @@ -734,195 +734,6 @@ public class SharedLinkApiTest extends AbstractBaseApiTest } } - /** - * Tests shared links to file (content) in a multi-tenant system. - * - *

POST:

- * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links} - * - *

DELETE:

- * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links/} - * - *

GET:

- * The following do not require authentication - * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links/} - * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links//content} - * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links//renditions} - * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links//renditions/} - * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links//renditions//content} - * - */ - // TODO now covered by testSharedLinkCreateGetDelete ? (since base class now uses tenant context by default) - @Test - public void testSharedLinkCreateGetDelete_MultiTenant() throws Exception - { - // As user1 - setRequestContext(user1); - - String docLibNodeId = getSiteContainerNodeId(tSiteId, "documentLibrary"); - - String folderName = "folder" + System.currentTimeMillis() + "_1"; - String folderId = createFolder(docLibNodeId, folderName, null).getId(); - - // create doc d1 - pdf - String fileName1 = "quick" + RUNID + "_1.pdf"; - File file1 = getResourceFile("quick.pdf"); - - byte[] file1_originalBytes = Files.readAllBytes(Paths.get(file1.getAbsolutePath())); - - String file1_MimeType = MimetypeMap.MIMETYPE_PDF; - - MultiPartBuilder.MultiPartRequest reqBody = MultiPartBuilder.create() - .setFileData(new MultiPartBuilder.FileData(fileName1, file1, file1_MimeType)) - .build(); - - HttpResponse response = post(getNodeChildrenUrl(folderId), reqBody.getBody(), null, reqBody.getContentType(), 201); - Document doc1 = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); - String d1Id = doc1.getId(); - assertNotNull(d1Id); - - // create shared link to document 1 - Map body = new HashMap<>(); - body.put("nodeId", d1Id); - response = post(URL_SHARED_LINKS, toJsonAsStringNonNull(body), 201); - QuickShareLink resp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); - String shared1Id = resp.getId(); - assertNotNull(shared1Id); - assertEquals(d1Id, resp.getNodeId()); - assertEquals(fileName1, resp.getName()); - assertEquals(file1_MimeType, resp.getContent().getMimeType()); - assertEquals(user1, resp.getSharedByUser().getId()); - - // allowable operations not included - no params - response = getSingle(QuickShareLinkEntityResource.class, shared1Id, null, 200); - resp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); - assertNull(resp.getAllowableOperations()); - - setRequestContext(null); - - // unauth access to get shared link info - Map params = Collections.singletonMap("include", "allowableOperations"); // note: this will be ignore for unauth access - response = getSingle(QuickShareLinkEntityResource.class, shared1Id, params, 200); - resp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); - assertEquals(shared1Id, resp.getId()); - assertEquals(fileName1, resp.getName()); - assertEquals(d1Id, resp.getNodeId()); - assertNull(resp.getAllowableOperations()); // include is ignored - assertNull(resp.getAllowableOperationsOnTarget()); // include is ignored - - - // unauth access to file 1 content (via shared link) - response = getSingle(QuickShareLinkEntityResource.class, shared1Id + "/content", null, 200); - assertArrayEquals(file1_originalBytes, response.getResponseAsBytes()); - Map responseHeaders = response.getHeaders(); - assertNotNull(responseHeaders); - assertEquals(file1_MimeType + ";charset=utf-8", responseHeaders.get("Content-Type")); - assertNotNull(responseHeaders.get("Expires")); - assertEquals("attachment; filename=\"" + fileName1 + "\"; filename*=UTF-8''" + fileName1 + "", responseHeaders.get("Content-Disposition")); - String lastModifiedHeader = responseHeaders.get(LAST_MODIFIED_HEADER); - assertNotNull(lastModifiedHeader); - // Test 304 response - Map headers = Collections.singletonMap(IF_MODIFIED_SINCE_HEADER, lastModifiedHeader); - getSingle(URL_SHARED_LINKS, shared1Id + "/content", null, headers, 304); - - // unauth access to file 1 content (via shared link) - without Content-Disposition header (attachment=false) - params = new HashMap<>(); - params.put("attachment", "false"); - response = getSingle(QuickShareLinkEntityResource.class, shared1Id + "/content", params, 200); - assertArrayEquals(file1_originalBytes, response.getResponseAsBytes()); - responseHeaders = response.getHeaders(); - assertNotNull(responseHeaders); - assertEquals(file1_MimeType + ";charset=utf-8", responseHeaders.get("Content-Type")); - assertNotNull(responseHeaders.get(LAST_MODIFIED_HEADER)); - assertNotNull(responseHeaders.get("Expires")); - assertNull(responseHeaders.get("Content-Disposition")); - - // -ve shared link rendition tests - { - // -ve test - try to get non-existent rendition content - getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/doclib/content", null, 404); - - // -ve test - try to get unregistered rendition content - getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/dummy/content", null, 404); - } - - // unauth access to get rendition info for a shared link (available => CREATED rendition only) - // -ve shared link rendition tests - { - // -ve test - try to get not created rendition for the given shared link - getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/doclib", null, 404); - - // -ve test - try to get unregistered rendition - getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/dummy", null, 404); - } - - // unauth access to get shared link renditions info (available => CREATED renditions only) - response = getAll(URL_SHARED_LINKS + "/" + shared1Id + "/renditions", null, 200); - List renditions = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Rendition.class); - assertEquals(0, renditions.size()); - - // create rendition of pdf doc - note: for some reason create rendition of txt doc fail on build m/c (TBC) ? - setRequestContext(user1); - - Rendition rendition = createAndGetRendition(d1Id, "doclib"); - assertNotNull(rendition); - assertEquals(Rendition.RenditionStatus.CREATED, rendition.getStatus()); - - setRequestContext(null); - - // unauth access to get shared link renditions info (available => CREATED renditions only) - response = getAll(URL_SHARED_LINKS + "/" + shared1Id + "/renditions", null, 200); - renditions = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Rendition.class); - assertEquals(1, renditions.size()); - assertEquals(Rendition.RenditionStatus.CREATED, renditions.get(0).getStatus()); - assertEquals("doclib", renditions.get(0).getId()); - - // unauth access to get rendition info for a shared link (available => CREATED rendition only) - { - // get a created rendition for the given shared link - getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/doclib", null, 200); - } - - // unauth access to get shared link file rendition content - response = getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/doclib/content", null, 200); - assertTrue(response.getResponseAsBytes().length > 0); - responseHeaders = response.getHeaders(); - assertNotNull(responseHeaders); - assertEquals(MimetypeMap.MIMETYPE_IMAGE_PNG + ";charset=utf-8", responseHeaders.get("Content-Type")); - assertNotNull(responseHeaders.get(LAST_MODIFIED_HEADER)); - assertNotNull(responseHeaders.get("Expires")); - String docName = "doclib"; - assertEquals("attachment; filename=\"" + docName + "\"; filename*=UTF-8''" + docName + "", responseHeaders.get("Content-Disposition")); - - // unauth access to get shared link file rendition content - without Content-Disposition header (attachment=false) - params = new HashMap<>(); - params.put("attachment", "false"); - response = getSingle(QuickShareLinkEntityResource.class, shared1Id + "/renditions/doclib/content", params, 200); - assertTrue(response.getResponseAsBytes().length > 0); - responseHeaders = response.getHeaders(); - assertNotNull(responseHeaders); - assertEquals(MimetypeMap.MIMETYPE_IMAGE_PNG + ";charset=utf-8", responseHeaders.get("Content-Type")); - assertNotNull(responseHeaders.get("Expires")); - assertNull(responseHeaders.get("Content-Disposition")); - lastModifiedHeader = responseHeaders.get(LAST_MODIFIED_HEADER); - assertNotNull(lastModifiedHeader); - // Test 304 response - headers = Collections.singletonMap(IF_MODIFIED_SINCE_HEADER, lastModifiedHeader); - getSingle(URL_SHARED_LINKS, shared1Id + "/renditions/doclib/content", null, headers, 304); - - // -ve test - userTwoN1 cannot delete shared link - setRequestContext(user2); - deleteSharedLink(shared1Id, 403); - - // -ve test - unauthenticated - setRequestContext(null); - deleteSharedLink(shared1Id, 401); - - // delete shared link - setRequestContext(user1); - deleteSharedLink(shared1Id); - } - /** * Tests shared links to file with expiry date. *

POST: