From b69b6463c0770f9e3b0bcf05dbdd3895932c9c5b Mon Sep 17 00:00:00 2001 From: Jamal Kaabi-Mofrad Date: Fri, 12 May 2017 09:30:24 +0000 Subject: [PATCH] Merged WEBAPP-API (5.2.1) to 5.2.N (5.2.1) 136704 jkaabimofrad: APPSREPO-165: Added tests for testing the 'include' parameter with 'path' and/or 'allowableOperations' upon creating a shared link. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@136710 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rest/api/tests/SharedLinkApiTest.java | 107 ++++++++++++++++-- 1 file changed, 97 insertions(+), 10 deletions(-) diff --git a/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java b/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java index 253ca5ef2f..fc9a8bc462 100644 --- a/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/SharedLinkApiTest.java @@ -988,7 +988,7 @@ public class SharedLinkApiTest extends AbstractBaseApiTest * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links?include=path} */ @Test - public void testSharedLinkIncludePath() throws Exception + public void testGetSharedLinksIncludePath() throws Exception { String contentText = "includePathTest" + RUNID; @@ -1010,12 +1010,12 @@ public class SharedLinkApiTest extends AbstractBaseApiTest assertEquals("get /shared-links/ API returns same no of shared-links with or without include=path, when there are no shared-links", sharedLinks, sharedLinksWithPath); // Create Files in various locations: My Files, SharedFiles, Sites with different visibility - + // Create doc in "My Files" - Document myFile = createTextFile(getMyNodeId(), "MyFile1.txt", contentText); + Document myFile = createTextFile(getMyNodeId(), "MyFile" + RUNID + ".txt", contentText); // Create doc in "Shared" folder - Document sharedFile = createTextFile(getSharedNodeId(), "SharedFile1.txt", contentText); + Document sharedFile = createTextFile(getSharedNodeId(), "SharedFile" + RUNID + ".txt", contentText); // Create Sites Site publicSite = createSite ("TestSite-Public-" + RUNID, SiteVisibility.PUBLIC); @@ -1062,14 +1062,14 @@ public class SharedLinkApiTest extends AbstractBaseApiTest Document docPermissions = new Document(); docPermissions.setPermissions(nodePermissions); - response = put(URL_NODES, fileMod.getId(), toJsonAsStringNonNull(docPermissions), null, 200); + put(URL_NODES, fileMod.getId(), toJsonAsStringNonNull(docPermissions), null, 200); // Grant user2: Consumer Permission for Moderated Site > Folder 2, File2 - response = put(URL_NODES, fileMod2.getId(), toJsonAsStringNonNull(docPermissions), null, 200); + put(URL_NODES, fileMod2.getId(), toJsonAsStringNonNull(docPermissions), null, 200); Folder folderPermissions = new Folder(); folderPermissions.setPermissions(nodePermissions); - response = put(URL_NODES, folder2.getId(), toJsonAsStringNonNull(folderPermissions), null, 200); + put(URL_NODES, folder2.getId(), toJsonAsStringNonNull(folderPermissions), null, 200); // Get links For User1 setRequestContext(user1); @@ -1081,7 +1081,7 @@ public class SharedLinkApiTest extends AbstractBaseApiTest // Path Info is not included for get shared-links/ response = getSingle(QuickShareLinkEntityResource.class, myFileLinkId, queryParams, 200); link = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); - assertNull("get /shared-links/ API does not return Path Info when requested", link.getPathInfo()); + assertNull("get /shared-links/ API ignores Path Info when requested as it is a noAuth API.", link.getPathInfo()); response = getAll(URL_SHARED_LINKS, paging, 200); sharedLinks = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), QuickShareLink.class); @@ -1163,7 +1163,7 @@ public class SharedLinkApiTest extends AbstractBaseApiTest getAll(URL_SHARED_LINKS, paging, queryParams, 401); // Unauthenticated request returns 401 - setRequestContext(null, null, null); + setRequestContext(user2, null, null); getAll(URL_SHARED_LINKS, paging, queryParams, 401); // Delete the shared links @@ -1174,7 +1174,94 @@ public class SharedLinkApiTest extends AbstractBaseApiTest deleteSharedLink(fileModLinkId); deleteSharedLink(fileMod2LinkId); deleteSharedLink(filePrivateLinkId); - } + } + + /** + * Tests create shared-links with 'include' parameter. + * + *

POST:

+ * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links?include=path} + * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links?include=allowableOperations} + * {@literal :/alfresco/api//public/alfresco/versions/1/shared-links?include=path,allowableOperations} + */ + @Test + public void testCreateSharedLinkWithIncludeParam() throws Exception + { + String content = "The quick brown fox jumps over the lazy dog."; + String fileName1 = "fileOne_" + RUNID + ".txt"; + String fileName2 = "fileTwo_" + RUNID + ".txt"; + String fileName3 = "fileThree_" + RUNID + ".txt"; + + // As user 1 create 3 text files in -my- folder (i.e. User's Home) + setRequestContext(user1); + String doc1Id = createTextFile(getMyNodeId(), fileName1, content).getId(); + String doc2Id = createTextFile(getMyNodeId(), fileName2, content).getId(); + String doc3Id = createTextFile(getMyNodeId(), fileName3, content).getId(); + + // Share the 'fileName1' doc and use the query parameter 'include=path' to return path information + QuickShareLink body = new QuickShareLink(); + body.setNodeId(doc1Id); + + HttpResponse response = post(URL_SHARED_LINKS, RestApiUtil.toJsonAsString(body), "?include=path", 201); + QuickShareLink quickShareLinkResponse = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); + PathInfo pathInfo = quickShareLinkResponse.getPathInfo(); + assertNotNull("API returns Path Info when requested upon creation.", pathInfo); + assertTrue("IsComplete should have been true for user1.", pathInfo.getIsComplete()); + assertEquals("Incorrect number of path elements.", 3, pathInfo.getElements().size()); + assertEquals("Incorrect path name.", "/Company Home/User Homes/" + user1, pathInfo.getName()); + assertEquals("Incorrect path element.", getRootNodeId(), pathInfo.getElements().get(0).getId()); + assertEquals("Incorrect path element.", "Company Home", pathInfo.getElements().get(0).getName()); + assertEquals("Incorrect path element", "User Homes", pathInfo.getElements().get(1).getName()); + assertEquals("Incorrect path element.", getMyNodeId(), pathInfo.getElements().get(2).getId()); + assertEquals("Incorrect path element.", user1, pathInfo.getElements().get(2).getName()); + + // Share the 'fileName2' doc and use the query parameter 'include=allowableOperations' to return allowableOperations information + body.setNodeId(doc2Id); + response = post(URL_SHARED_LINKS, RestApiUtil.toJsonAsString(body), "?include=allowableOperations", 201); + quickShareLinkResponse = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); + List allowableOperations = quickShareLinkResponse.getAllowableOperations(); + assertNotNull("'allowableOperations' should have been returned.", allowableOperations); + assertEquals("allowableOperations should only have 'Delete' as allowable operation.", 1, allowableOperations.size()); + assertEquals("Incorrect allowable operation.", "delete", allowableOperations.get(0)); + + // Share the 'fileName3' doc and use the query parameter 'include=path,allowableOperations' to return path and allowableOperations information + body.setNodeId(doc3Id); + response = post(URL_SHARED_LINKS, RestApiUtil.toJsonAsString(body), "?include=path,allowableOperations", 201); + quickShareLinkResponse = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), QuickShareLink.class); + // Check PathInfo + pathInfo = quickShareLinkResponse.getPathInfo(); + assertNotNull("'pathInfo' should have been returned.", pathInfo); + assertTrue("IsComplete should have been true for user1.", pathInfo.getIsComplete()); + assertEquals("Incorrect number of path elements.", 3, pathInfo.getElements().size()); + assertEquals("Incorrect path name.", "/Company Home/User Homes/" + user1, pathInfo.getName()); + + // Check allowableOperations + allowableOperations = quickShareLinkResponse.getAllowableOperations(); + assertNotNull("'allowableOperations' should have been returned.", allowableOperations); + assertEquals("allowableOperations should only have 'Delete' as allowable operation.", 1, allowableOperations.size()); + assertEquals("Incorrect allowable operation.", "delete", allowableOperations.get(0)); + + // Test that listing shared links also support the include parameter. + Paging paging = getPaging(0, 100); + response = getAll(URL_SHARED_LINKS, paging, Collections.singletonMap("include", "path,allowableOperations"), 200); + List sharedLinks = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), QuickShareLink.class); + assertEquals("Incorrect number of shared-links returned.", 3, sharedLinks.size()); + sharedLinks.forEach(sharedLink -> + { + // Check PathInfo + PathInfo path = sharedLink.getPathInfo(); + assertNotNull("'pathInfo' should have been returned.", path); + assertTrue("IsComplete should have been true for user1.", path.getIsComplete()); + assertEquals("Incorrect number of path elements.", 3, path.getElements().size()); + assertEquals("Incorrect path name.", "/Company Home/User Homes/" + user1, path.getName()); + + // Check allowableOperations + List operations = sharedLink.getAllowableOperations(); + assertNotNull("'allowableOperations' should have been returned.", operations); + assertEquals("allowableOperations should only have 'Delete' as allowable operation.", 1, operations.size()); + assertEquals("Incorrect allowable operation.", "delete", operations.get(0)); + }); + } private String getEmailSharedLinkUrl(String sharedId) {