diff --git a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java index bf5ec93053..2c95fc844a 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/nodes/NodeFolderSizeRelation.java @@ -25,6 +25,7 @@ */ package org.alfresco.rest.api.nodes; +import org.alfresco.model.ContentModel; import org.alfresco.model.FolderSizeModel; import org.alfresco.repo.action.executer.NodeSizeActionExecuter; import org.alfresco.repo.security.permissions.AccessDeniedException; @@ -53,8 +54,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.extensions.webscripts.Status; import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; +import java.util.*; /** * Node Size @@ -123,6 +123,7 @@ public class NodeFolderSizeRelation implements public Map createById(String nodeId, Parameters params) { NodeRef nodeRef = nodes.validateNode(nodeId); + nodeService.setProperty(nodeRef, FolderSizeModel.PROP_STATUS, "IN-PROGRESS"); Node nodeInfo = nodes.getNode(nodeId); NodePermissions nodePerms = nodeInfo.getPermissions(); int maxItems = params.getPaging().getMaxItems(); @@ -140,7 +141,6 @@ public class NodeFolderSizeRelation implements folderSizeAction.setExecuteAsynchronously(true); folderSizeAction.setParameterValue(NodeSizeActionExecuter.PAGE_SIZE, maxItems); actionService.executeAction(folderSizeAction, nodeRef, false, true); - nodeService.setProperty(nodeRef, FolderSizeModel.PROP_STATUS, "IN-PROGRESS"); Map result = new HashMap<>(); result.put("executionId", nodeId); return result; diff --git a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java index d3db0fe475..8fa61dcc00 100644 --- a/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java +++ b/remote-api/src/test/java/org/alfresco/rest/api/tests/NodeFolderSizeApiTest.java @@ -46,10 +46,12 @@ import static org.junit.Assert.assertNotNull; public class NodeFolderSizeApiTest extends AbstractBaseApiTest{ /** - * Private site of user one from network one. + * Private site of user two from network one. */ private Site userOneN1Site; + private Site userOneN2Site; + private String addToDocumentLibrary(Site testSite, String name, String nodeType, String userId) throws Exception { String parentId = getSiteContainerNodeId(testSite.getId(), "documentLibrary"); @@ -62,7 +64,7 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest{ * {@literal :/alfresco/api//public/alfresco/versions/1/nodes//calculateSize} */ @Test - public void testCalculateFolderSize() throws Exception + public void testPostCalculateFolderSize() throws Exception { setRequestContext(user1); @@ -81,12 +83,43 @@ public class NodeFolderSizeApiTest extends AbstractBaseApiTest{ Object document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Object.class); String contentNodeId = document.toString(); assertNotNull(contentNodeId); + + // -ve test - unknown nodeId + delete(getFolderSizeUrl(folderId), folderId, null, 404); + + // -ve test - unauthenticated. + delete(getFolderSizeUrl(folderId), folderId, null, 401); + + // -ve test - permission denied (on version other than most recent) + delete(getFolderSizeUrl(folderId), folderId, null, 403); + } + + @Test + public void testGetCalculateFolderSize() throws Exception + { + setRequestContext(user1); + + String siteTitle = "RandomSite" + System.currentTimeMillis(); + userOneN2Site = createSite("RN"+RUNID, siteTitle, siteTitle, SiteVisibility.PRIVATE, 201); + + // Create a folder within the site document's library. + String folderName = "folder" + System.currentTimeMillis(); + String folderId = addToDocumentLibrary(userOneN2Site, folderName, TYPE_CM_CONTENT, user1); + + Map params = new HashMap<>(); + params.put("nodeId",folderId); + + HttpResponse response = getSingle(getFolderSizeUrl(folderId), toJsonAsStringNonNull(params), 200); + Object document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Object.class); + String contentNodeId = document.toString(); + assertNotNull(contentNodeId); } @After public void tearDown() throws Exception { deleteSite(userOneN1Site.getId(), true, 204); + deleteSite(userOneN2Site.getId(), true, 204); } @Override