diff --git a/source/java/org/alfresco/rest/api/impl/NodesImpl.java b/source/java/org/alfresco/rest/api/impl/NodesImpl.java index c80d5a5c2b..6e7ca38bb8 100644 --- a/source/java/org/alfresco/rest/api/impl/NodesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/NodesImpl.java @@ -91,6 +91,7 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentData; import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentWriter; +import org.alfresco.service.cmr.repository.CyclicChildRelationshipException; import org.alfresco.service.cmr.repository.DuplicateChildNodeNameException; import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.MimetypeService; @@ -1179,6 +1180,12 @@ public class NodesImpl implements Nodes private void move(NodeRef nodeRef, NodeRef parentNodeRef, String name) { NodeRef currentParentNodeRef = getParentNodeRef(nodeRef); + if (currentParentNodeRef == null) + { + // implies root (Company Home) hence return 403 here + throw new PermissionDeniedException(); + } + if (! currentParentNodeRef.equals(parentNodeRef)) { try @@ -1200,11 +1207,15 @@ public class NodesImpl implements Nodes catch (FileExistsException fee) { // duplicate - name clash - throw new ConstraintViolatedException(fee.getMessage()); + throw new ConstraintViolatedException(fee.getMessage()+" ["+nodeRef+","+parentNodeRef+"]"); } catch (FileFolderServiceImpl.InvalidTypeException ite) { - throw new InvalidArgumentException("Expect target parentId to be a folder: "+parentNodeRef); + throw new InvalidArgumentException(ite.getMessage()+" ["+nodeRef+","+parentNodeRef+"]"); + } + catch (CyclicChildRelationshipException ccre) + { + throw new InvalidArgumentException(ccre.getMessage()+" ["+nodeRef+","+parentNodeRef+"]"); } } } @@ -1416,15 +1427,15 @@ public class NodesImpl implements Nodes } catch (AccessDeniedException ade) { - throw new PermissionDeniedException(); + throw new PermissionDeniedException(ade.getMessage()); } catch (ContentQuotaException cqe) { - throw new RequestEntityTooLargeException(); + throw new RequestEntityTooLargeException(cqe.getMessage()); } catch (ContentLimitViolationException clv) { - throw new ConstraintViolatedException(); + throw new ConstraintViolatedException(clv.getMessage()); } catch (Exception ex) { 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 78b4921beb..5e484c8090 100644 --- a/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java @@ -16,7 +16,6 @@ * You should have received a copy of the GNU Lesser General Public License * along with Alfresco. If not, see . */ - package org.alfresco.rest.api.tests; import static org.alfresco.rest.api.tests.util.RestApiUtil.parsePaging; @@ -50,7 +49,6 @@ import java.util.UUID; import org.alfresco.model.ContentModel; import org.alfresco.model.ForumModel; import org.alfresco.repo.content.MimetypeMap; -import org.alfresco.repo.model.Repository; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.rest.api.Nodes; @@ -98,7 +96,7 @@ import org.springframework.util.ResourceUtils; *
  • {@literal :/alfresco/api//public/alfresco/versions/1/nodes//children}
  • * * - * TODO replace most (all ?) usages of repoService/repositoryHelper test data setup code with actual REST v1 API calls + * TODO replace most (all ?) usages of repoService test data setup code with actual FileFolder API calls (where appropriate) * * @author Jamal Kaabi-Mofrad * @author janv @@ -127,7 +125,6 @@ public class NodeApiTest extends AbstractBaseApiTest protected MutableAuthenticationService authenticationService; protected PersonService personService; - protected Repository repositoryHelper; protected JacksonUtil jacksonUtil; protected PermissionService permissionService; @@ -137,7 +134,6 @@ public class NodeApiTest extends AbstractBaseApiTest { authenticationService = applicationContext.getBean("authenticationService", MutableAuthenticationService.class); personService = applicationContext.getBean("personService", PersonService.class); - repositoryHelper = applicationContext.getBean("repositoryHelper", Repository.class); jacksonUtil = new JacksonUtil(applicationContext.getBean("jsonHelper", JacksonHelper.class)); permissionService = applicationContext.getBean("permissionService", PermissionService.class); @@ -179,6 +175,40 @@ public class NodeApiTest extends AbstractBaseApiTest AuthenticationUtil.clearCurrentSecurityContext(); } + // root (eg. Company Home for on-prem) + private String getRootNodeId(String runAsUserId) throws Exception + { + HttpResponse response = getSingle(NodesEntityResource.class, runAsUserId, Nodes.PATH_ROOT, null, 200); + Node node = jacksonUtil.parseEntry(response.getJsonResponse(), Node.class); + return node.getId(); + } + + // my (eg. User's Home for on-prem) + private String getMyNodeId(String runAsUserId) throws Exception + { + HttpResponse response = getSingle(NodesEntityResource.class, runAsUserId, Nodes.PATH_MY, null, 200); + Node node = jacksonUtil.parseEntry(response.getJsonResponse(), Node.class); + return node.getId(); + } + + private Folder createFolder(String runAsUserId, String parentId, String folderName) throws Exception + { + return createFolder(runAsUserId, parentId, folderName, null); + } + + private Folder createFolder(String runAsUserId, String parentId, String folderName, Map props) throws Exception + { + Folder f = new Folder(); + f.setName(folderName); + f.setNodeType("cm:folder"); + f.setProperties(props); + + // create folder + HttpResponse response = post(getChildrenUrl(parentId), runAsUserId, toJsonAsStringNonNull(f), 201); + + return RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); + } + /** * Tests get document library children. *

    GET:

    @@ -294,15 +324,19 @@ public class NodeApiTest extends AbstractBaseApiTest public void testListMyFilesChildren() throws Exception { AuthenticationUtil.setFullyAuthenticatedUser(user1); - NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personService.getPerson(user1)); + String myNodeId = getMyNodeId(user1); + NodeRef myFilesNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, myNodeId); + + Map props = new HashMap<>(1); + props.put("cm:title", "This is folder 1"); String folder1 = "folder" + System.currentTimeMillis() + "_1"; - NodeRef folder1NodeRef = repoService.createFolder(myFilesNodeRef, folder1); - repoService.getNodeService().setProperty(folder1NodeRef, ContentModel.PROP_TITLE, "This is folder 1"); + String folder1_Id = createFolder(user1, myNodeId, folder1, props).getId(); + props = new HashMap<>(1); + props.put("cm:title", "This is folder 2"); String folder2 = "folder" + System.currentTimeMillis() + "_2"; - NodeRef folder2NodeRef = repoService.createFolder(myFilesNodeRef, folder2); - repoService.getNodeService().setProperty(folder2NodeRef, ContentModel.PROP_TITLE, "This is folder 2"); + String folder2_Id = createFolder(user1, myNodeId, folder2, props).getId(); String content1 = "content" + System.currentTimeMillis() + "_1"; NodeRef contentNodeRef = repoService.createDocument(myFilesNodeRef, content1, "The quick brown fox jumps over the lazy dog."); @@ -310,7 +344,7 @@ public class NodeApiTest extends AbstractBaseApiTest repoService.getNodeService().setProperty(contentNodeRef, ContentModel.PROP_LAST_THUMBNAIL_MODIFICATION_DATA, (Serializable) Collections.singletonList("doclib:1444660852296")); - List folderIds = Arrays.asList(folder1NodeRef.getId(), folder2NodeRef.getId()); + List folderIds = Arrays.asList(folder1_Id, folder2_Id); List contentIds = Arrays.asList(contentNodeRef.getId()); @@ -386,9 +420,9 @@ public class NodeApiTest extends AbstractBaseApiTest assertNull("There shouldn't be a 'properties' object in the response.", nodes.get(0).getProperties()); assertNull("There shouldn't be a 'properties' object in the response.", nodes.get(1).getProperties()); assertNotNull("There should be a 'properties' object in the response.", nodes.get(2).getProperties()); - Set> props = nodes.get(2).getProperties().entrySet(); - assertEquals(1, props.size()); - Entry entry = props.iterator().next(); + Set> propsSet = nodes.get(2).getProperties().entrySet(); + assertEquals(1, propsSet.size()); + Entry entry = propsSet.iterator().next(); assertEquals("cm:lastThumbnailModification", entry.getKey()); assertEquals("doclib:1444660852296", ((List) entry.getValue()).get(0)); @@ -439,22 +473,26 @@ public class NodeApiTest extends AbstractBaseApiTest @Test public void testGetPathElements_DocLib() throws Exception { - AuthenticationUtil.setFullyAuthenticatedUser(userOneN1.getId()); + String userId = userOneN1.getId(); + + AuthenticationUtil.setFullyAuthenticatedUser(userId); userOneN1Site.inviteToSite(userTwoN1.getEmail(), SiteRole.SiteConsumer); NodeRef docLibNodeRef = userOneN1Site.getContainerNodeRef(("documentLibrary")); // /Company Home/Sites/RandomSite/documentLibrary/folder_A String folderA = "folder" + System.currentTimeMillis() + "_A"; - NodeRef folderA_Ref = repoService.createFolder(docLibNodeRef, folderA); + String folderA_Id = createFolder(userId, docLibNodeRef.getId(), folderA).getId(); // /Company Home/Sites/RandomSite/documentLibrary/folder_A/folder_B String folderB = "folder" + System.currentTimeMillis() + "_B"; - NodeRef folderB_Ref = repoService.createFolder(folderA_Ref, folderB); + String folderB_Id = createFolder(userId, folderA_Id, folderB).getId(); + NodeRef folderB_Ref = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folderB_Id); // /Company Home/Sites/RandomSite/documentLibrary/folder_A/folder_B/folder_C String folderC = "folder" + System.currentTimeMillis() + "_C"; - NodeRef folderC_Ref = repoService.createFolder(folderB_Ref, folderC); + String folderC_Id = createFolder(userId, folderB_Id, folderC).getId(); + NodeRef folderC_Ref = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folderC_Id); // /Company Home/Sites/RandomSite/documentLibrary/folder_A/folder_B/folder_C/content String content = "content" + System.currentTimeMillis(); @@ -530,11 +568,13 @@ public class NodeApiTest extends AbstractBaseApiTest // /Company Home/User Homes/user/folder_A String folderA = "folder" + System.currentTimeMillis() + "_A"; - NodeRef folderA_Ref = repoService.createFolder(myHomeNodeRef, folderA); + String folderA_Id = createFolder(user1, myFilesNodeId, folderA).getId(); + NodeRef folderA_Ref = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folderA_Id); // /Company Home/User Homes/user/folder_A/folder_B String folderB = "folder" + System.currentTimeMillis() + "_B"; - NodeRef folderB_Ref = repoService.createFolder(folderA_Ref, folderB); + String folderB_Id = createFolder(user1, folderA_Id, folderB).getId(); + NodeRef folderB_Ref = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folderB_Id); // /Company Home/User Homes/user/folder_A/folder_B/content String contentName = "content" + System.currentTimeMillis(); @@ -542,7 +582,7 @@ public class NodeApiTest extends AbstractBaseApiTest // Add property String title = "test title"; - repoService.nodeService.setProperty(contentNodeRef, ContentModel.PROP_TITLE, title); + repoService.getNodeService().setProperty(contentNodeRef, ContentModel.PROP_TITLE, title); // get node info response = getSingle(NodesEntityResource.class, user1, contentNodeRef.getId(), null, 200); @@ -553,7 +593,7 @@ public class NodeApiTest extends AbstractBaseApiTest Document d1 = new Document(); d1.setId(documentResp.getId()); - d1.setParentId(folderB_Ref.getId()); + d1.setParentId(folderB_Id); d1.setName(contentName); d1.setNodeType("cm:content"); ContentInfo ci = new ContentInfo(); @@ -875,7 +915,9 @@ public class NodeApiTest extends AbstractBaseApiTest public void testDelete() throws Exception { AuthenticationUtil.setFullyAuthenticatedUser(user1); - NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personService.getPerson(user1)); + + String myNodeId = getMyNodeId(user1); + NodeRef myFilesNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, myNodeId); String content1 = "content" + System.currentTimeMillis() + "_1"; NodeRef content1Ref = repoService.createDocument(myFilesNodeRef, content1, "The quick brown fox jumps over the lazy dog."); @@ -887,24 +929,24 @@ public class NodeApiTest extends AbstractBaseApiTest delete("nodes", user1, content1Ref.getId(), 404); String folder1 = "folder" + System.currentTimeMillis() + "_1"; - NodeRef folder1Ref = repoService.createFolder(myFilesNodeRef, folder1); + String folder1Ref = createFolder(user1, myNodeId, folder1).getId(); String folder2 = "folder" + System.currentTimeMillis() + "_2"; - NodeRef folder2Ref = repoService.createFolder(folder1Ref, folder2); + String folder2Ref = createFolder(user1, folder1Ref, folder2).getId(); String content2 = "content" + System.currentTimeMillis() + "_2"; - NodeRef content2Ref = repoService.createDocument(folder2Ref, content2, "The quick brown fox jumps over the lazy dog."); + NodeRef content2Ref = repoService.createDocument(new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folder2Ref), content2, "The quick brown fox jumps over the lazy dog."); // cascade delete folder - delete("nodes", user1, folder1Ref.getId(), 204); + delete("nodes", user1, folder1Ref, 204); // -ve test - delete("nodes", user1, folder2Ref.getId(), 404); + delete("nodes", user1, folder2Ref, 404); delete("nodes", user1, content2Ref.getId(), 404); // -ve test - NodeRef chNodeRef = repositoryHelper.getCompanyHome(); - delete("nodes", user1, chNodeRef.getId(), 403); + String rootNodeId = getRootNodeId(user1); + delete("nodes", user1, rootNodeId, 403); } /** @@ -917,24 +959,12 @@ public class NodeApiTest extends AbstractBaseApiTest { AuthenticationUtil.setFullyAuthenticatedUser(user1); - String postUrl = getChildrenUrl(Nodes.PATH_MY); - - Folder f = new Folder(); - f.setName("f1"); - f.setNodeType("cm:folder"); - // create folder f1 - HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(f), 201); - Folder folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); + Folder folderResp = createFolder(user1, Nodes.PATH_MY, "f1"); String f1Id = folderResp.getId(); - f = new Folder(); - f.setName("f2"); - f.setNodeType("cm:folder"); - // create folder f2 - response = post(postUrl, user1, toJsonAsStringNonNull(f), 201); - folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); + folderResp = createFolder(user1, Nodes.PATH_MY, "f2"); String f2Id = folderResp.getId(); // create doc d1 @@ -954,7 +984,7 @@ public class NodeApiTest extends AbstractBaseApiTest Document dUpdate = new Document(); dUpdate.setParentId(f2Id); - response = put("nodes", user1, d1Id, toJsonAsStringNonNull(dUpdate), null, 200); + HttpResponse response = put("nodes", user1, d1Id, toJsonAsStringNonNull(dUpdate), null, 200); Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); assertEquals(d1Name, documentResp.getName()); @@ -996,6 +1026,31 @@ public class NodeApiTest extends AbstractBaseApiTest dUpdate = new Document(); dUpdate.setParentId(d2Id); put("nodes", user1, d1Id, toJsonAsStringNonNull(dUpdate), null, 400); + + String rootNodeId = getRootNodeId(user1); + + // create folder f3 (sub-folder of f2) + folderResp = createFolder(user1, f2Id, "f3"); + String f3Id = folderResp.getId(); + + // can't create cycle (move into own subtree) + dUpdate = new Document(); + dUpdate.setParentId(f3Id); + put("nodes", user1, f2Id, toJsonAsStringNonNull(dUpdate), null, 400); + + // no (write/create) permissions to move to target + dUpdate = new Document(); + dUpdate.setParentId(rootNodeId); + put("nodes", user1, d1Id, toJsonAsStringNonNull(dUpdate), null, 403); + + AuthenticationUtil.setFullyAuthenticatedUser(user2); + + String my2NodeId = getMyNodeId(user2); + + // no (write/delete) permissions to move source + dUpdate = new Document(); + dUpdate.setParentId(my2NodeId); + put("nodes", user2, f1Id, toJsonAsStringNonNull(dUpdate), null, 403); } /** @@ -1008,24 +1063,21 @@ public class NodeApiTest extends AbstractBaseApiTest { AuthenticationUtil.setFullyAuthenticatedUser(user1); - NodeRef personNodeRef = personService.getPerson(user1); - NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personNodeRef); + String myNodeId = getMyNodeId(user1); UserInfo expectedUser = new UserInfo(user1, user1+" "+user1); - String postUrl = getChildrenUrl(myFilesNodeRef); + String postUrl = getChildrenUrl(myNodeId); + + // create folder + Folder folderResp = createFolder(user1, myNodeId, "f1"); Folder f1 = new Folder(); f1.setName("f1"); f1.setNodeType("cm:folder"); - // create folder - HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(f1), 201); - - Folder folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); - f1.setIsFolder(true); - f1.setParentId(myFilesNodeRef.getId()); + f1.setParentId(myNodeId); f1.setAspectNames(Collections.singletonList("cm:auditable")); f1.setCreatedByUser(expectedUser); @@ -1038,16 +1090,15 @@ public class NodeApiTest extends AbstractBaseApiTest props.put("cm:title","my folder title"); props.put("cm:description","my folder description"); + folderResp = createFolder(user1, myNodeId, "f2", props); + Folder f2 = new Folder(); f2.setName("f2"); f2.setNodeType("cm:folder"); f2.setProperties(props); - response = post(postUrl, user1, toJsonAsStringNonNull(f2), 201); - folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); - f2.setIsFolder(true); - f2.setParentId(myFilesNodeRef.getId()); + f2.setParentId(myNodeId); f2.setAspectNames(Arrays.asList("cm:auditable","cm:titled")); f2.setCreatedByUser(expectedUser); @@ -1065,11 +1116,23 @@ public class NodeApiTest extends AbstractBaseApiTest invalid.setName("my folder"); post(postUrl, user1, toJsonAsStringNonNull(invalid), 400); + // create empty file + Document d1 = new Document(); + d1.setName("d1.txt"); + d1.setNodeType("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); + String d1Id = documentResp.getId(); + // -ve test - invalid (eg. not a folder) parent id Folder f3 = new Folder(); f3.setName("f3"); f3.setNodeType("cm:folder"); - post(getChildrenUrl(personNodeRef), user1, toJsonAsStringNonNull(f3), 400); + post(getChildrenUrl(d1Id), user1, toJsonAsStringNonNull(f3), 400); // -ve test - unknown parent folder node id post(getChildrenUrl(UUID.randomUUID().toString()), user1, toJsonAsStringNonNull(f3), 404); @@ -1088,12 +1151,11 @@ public class NodeApiTest extends AbstractBaseApiTest { AuthenticationUtil.setFullyAuthenticatedUser(user1); - NodeRef personNodeRef = personService.getPerson(user1); - NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personNodeRef); + String myNodeId = getMyNodeId(user1); UserInfo expectedUser = new UserInfo(user1, user1+" "+user1); - String postUrl = getChildrenUrl(myFilesNodeRef); + String postUrl = getChildrenUrl(myNodeId); Document d1 = new Document(); d1.setName("d1.txt"); @@ -1104,11 +1166,11 @@ public class NodeApiTest extends AbstractBaseApiTest // create empty file HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201); - Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); + String d1Id = documentResp.getId(); d1.setIsFolder(false); - d1.setParentId(myFilesNodeRef.getId()); + d1.setParentId(myNodeId); d1.setAspectNames(Collections.singletonList("cm:auditable")); d1.setCreatedByUser(expectedUser); @@ -1135,7 +1197,7 @@ public class NodeApiTest extends AbstractBaseApiTest documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); d2.setIsFolder(false); - d2.setParentId(myFilesNodeRef.getId()); + d2.setParentId(myNodeId); d2.setAspectNames(Arrays.asList("cm:auditable","cm:titled")); d2.setCreatedByUser(expectedUser); @@ -1164,7 +1226,7 @@ public class NodeApiTest extends AbstractBaseApiTest Document d3 = new Document(); d3.setName("d3.txt"); d3.setNodeType("cm:content"); - post(getChildrenUrl(personNodeRef), user1, toJsonAsStringNonNull(d3), 400); + post(getChildrenUrl(d1Id), user1, toJsonAsStringNonNull(d3), 400); // -ve test - unknown parent folder node id post(getChildrenUrl(UUID.randomUUID().toString()), user1, toJsonAsStringNonNull(d3), 404); @@ -1183,28 +1245,25 @@ public class NodeApiTest extends AbstractBaseApiTest { AuthenticationUtil.setFullyAuthenticatedUser(user1); - NodeRef personNodeRef = personService.getPerson(user1); - NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personNodeRef); + String myNodeId = getMyNodeId(user1); UserInfo expectedUser = new UserInfo(user1, user1+" "+user1); - String postUrl = getChildrenUrl(myFilesNodeRef); + String postUrl = getChildrenUrl(myNodeId); String folderName = "My Folder"; // create folder + Folder folderResp = createFolder(user1, myNodeId, folderName); + + String fId = folderResp.getId(); Folder f1 = new Folder(); f1.setName(folderName); f1.setNodeType("cm:folder"); - HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(f1), 201); - Folder folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class); - - String fId = folderResp.getId(); - f1.setIsFolder(true); - f1.setParentId(myFilesNodeRef.getId()); + f1.setParentId(myNodeId); f1.setAspectNames(Collections.singletonList("cm:auditable")); f1.setCreatedByUser(expectedUser); @@ -1221,13 +1280,13 @@ public class NodeApiTest extends AbstractBaseApiTest ci.setMimeType("text/plain"); d1.setContent(ci); - response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201); + HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201); Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class); String dId = documentResp.getId(); d1.setIsFolder(false); - d1.setParentId(myFilesNodeRef.getId()); + d1.setParentId(myNodeId); d1.setAspectNames(Collections.singletonList("cm:auditable")); d1.setCreatedByUser(expectedUser); @@ -1381,7 +1440,8 @@ public class NodeApiTest extends AbstractBaseApiTest { AuthenticationUtil.setFullyAuthenticatedUser(user1); - NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personService.getPerson(user1)); + String myNodeId = getMyNodeId(user1); + NodeRef myFilesNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, myNodeId); Folder f1 = new Folder(); f1.setName("F1");