mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged HEAD (5.2) to 5.2.N (5.2.1)
126411 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 121561 jvonka: FileFolder API - add some extra tests for "relativePath" (when getting node info or listing children) RA-672, RA-753 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126757 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -328,16 +328,25 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
String myNodeId = getMyNodeId(user1);
|
||||
NodeRef myFilesNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, myNodeId);
|
||||
|
||||
String myChildrenUrl = getChildrenUrl(Nodes.PATH_MY);
|
||||
String rootChildrenUrl = getChildrenUrl(Nodes.PATH_ROOT);
|
||||
|
||||
Map<String, Object> props = new HashMap<>(1);
|
||||
props.put("cm:title", "This is folder 1");
|
||||
String folder1 = "folder " + System.currentTimeMillis() + " 1";
|
||||
String folder1_Id = createFolder(user1, myNodeId, folder1, props).getId();
|
||||
|
||||
String contentF1 = "content" + System.currentTimeMillis() + " in folder 1";
|
||||
String contentF1_Id = repoService.createDocument(new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folder1_Id), contentF1, "The quick brown fox jumps over the lazy dog 1.").getId();
|
||||
|
||||
props = new HashMap<>(1);
|
||||
props.put("cm:title", "This is folder 2");
|
||||
String folder2 = "folder " + System.currentTimeMillis() + " 2";
|
||||
String folder2_Id = createFolder(user1, myNodeId, folder2, props).getId();
|
||||
|
||||
String contentF2 = "content" + System.currentTimeMillis() + " in folder 2";
|
||||
String contentF2_Id = repoService.createDocument(new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folder2_Id), contentF2, "The quick brown fox jumps over the lazy dog 2.").getId();
|
||||
|
||||
String content1 = "content" + System.currentTimeMillis() + " 1";
|
||||
NodeRef contentNodeRef = repoService.createDocument(myFilesNodeRef, content1, "The quick brown fox jumps over the lazy dog.");
|
||||
repoService.getNodeService().setProperty(contentNodeRef, ContentModel.PROP_OWNER, user1);
|
||||
@@ -349,13 +358,13 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
|
||||
|
||||
Paging paging = getPaging(0, Integer.MAX_VALUE);
|
||||
HttpResponse response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, 200);
|
||||
HttpResponse response = getAll(myChildrenUrl, user1, paging, 200);
|
||||
List<Document> nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(3, nodes.size());
|
||||
|
||||
// Order by folders and modified date first
|
||||
Map<String, String> orderBy = Collections.singletonMap("orderBy", "isFolder DESC,modifiedAt DESC");
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, orderBy, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, orderBy, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(3, nodes.size());
|
||||
assertEquals(folder2, nodes.get(0).getName());
|
||||
@@ -377,7 +386,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
|
||||
// request without select
|
||||
Map<String, String> params = new LinkedHashMap<>();
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, params, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
for (Node n : nodes)
|
||||
{
|
||||
@@ -390,7 +399,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
// request with select - example 1
|
||||
params = new LinkedHashMap<>();
|
||||
params.put("select", "isLink");
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, params, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
for (Node n : nodes)
|
||||
{
|
||||
@@ -400,7 +409,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
// request with select - example 2
|
||||
params = new LinkedHashMap<>();
|
||||
params.put("select", "aspectNames,properties, path,isLink");
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, params, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
for (Node n : nodes)
|
||||
{
|
||||
@@ -414,7 +423,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
params = new LinkedHashMap<>();
|
||||
params.put("select", "cm:lastThumbnailModification");
|
||||
params.put("orderBy", "isFolder DESC,modifiedAt DESC");
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, params, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(3, nodes.size());
|
||||
assertNull("There shouldn't be a 'properties' object in the response.", nodes.get(0).getProperties());
|
||||
@@ -430,7 +439,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
// filtering, via where clause - folders only
|
||||
params = new LinkedHashMap<>();
|
||||
params.put("where", "(isFolder=true)");
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, params, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(2, nodes.size());
|
||||
|
||||
@@ -442,27 +451,29 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
// filtering, via where clause - content only
|
||||
params = new LinkedHashMap<>();
|
||||
params.put("where", "(isFolder=false)");
|
||||
response = getAll(getChildrenUrl(myFilesNodeRef), user1, paging, params, 200);
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(1, nodes.size());
|
||||
assertFalse(nodes.get(0).getIsFolder());
|
||||
assertTrue(contentIds.contains(nodes.get(0).getId()));
|
||||
|
||||
// get node info via relativePath
|
||||
// list children via relativePath
|
||||
|
||||
params = Collections.singletonMap("relativePath", folder1);
|
||||
response = getSingle(NodesEntityResource.class, user1, Nodes.PATH_MY, params, 200);
|
||||
Folder folderResp = jacksonUtil.parseEntry(response.getJsonResponse(), Folder.class);
|
||||
assertEquals(folder1_Id, folderResp.getId());
|
||||
response = getAll(myChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(1, nodes.size());
|
||||
assertEquals(contentF1_Id, nodes.get(0).getId());
|
||||
|
||||
params = Collections.singletonMap("relativePath", "User Homes/" + user1 + "/" + folder2);
|
||||
response = getSingle(NodesEntityResource.class, user1, Nodes.PATH_ROOT, params, 200);
|
||||
folderResp = jacksonUtil.parseEntry(response.getJsonResponse(), Folder.class);
|
||||
assertEquals(folder2_Id, folderResp.getId());
|
||||
response = getAll(rootChildrenUrl, user1, paging, params, 200);
|
||||
nodes = jacksonUtil.parseEntries(response.getJsonResponse(), Document.class);
|
||||
assertEquals(1, nodes.size());
|
||||
assertEquals(contentF2_Id, nodes.get(0).getId());
|
||||
|
||||
// -ve test - Invalid QName (Namespace prefix cm... is not mapped to a namespace URI) for the orderBy parameter.
|
||||
orderBy = Collections.singletonMap("orderBy", "isFolder DESC,cm" + System.currentTimeMillis() + ":modified DESC");
|
||||
getAll(getChildrenUrl(myFilesNodeRef), user1, paging, orderBy, 400);
|
||||
params = Collections.singletonMap("orderBy", "isFolder DESC,cm" + System.currentTimeMillis() + ":modified DESC");
|
||||
getAll(myChildrenUrl, user1, paging, params, 400);
|
||||
|
||||
paging = getPaging(0, 10);
|
||||
|
||||
@@ -476,8 +487,17 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(user2);
|
||||
getAll(getChildrenUrl(myFilesNodeRef), user2, paging, 403);
|
||||
|
||||
// -ve test - try to list children using relative path to unknown node
|
||||
params = Collections.singletonMap("relativePath", "User Homes/" + user1 + "/unknown");
|
||||
getSingle(NodesEntityResource.class, user1, Nodes.PATH_ROOT, params, 404);
|
||||
getAll(rootChildrenUrl, user1, paging, params, 404);
|
||||
|
||||
// -ve test - try to list children using relative path to node for which user does not have read permission
|
||||
params = Collections.singletonMap("relativePath", "User Homes/" + user2);
|
||||
getAll(rootChildrenUrl, user1, paging, params, 403);
|
||||
|
||||
// -ve test - try to list children using relative path to node that is of wrong type (ie. not a folder/container)
|
||||
params = Collections.singletonMap("relativePath", folder1 + "/" + contentF1);
|
||||
getAll(myChildrenUrl, user1, paging, params, 400);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -666,6 +686,15 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
documentResp = jacksonUtil.parseEntry(response.getJsonResponse(), Document.class);
|
||||
assertEquals(content_Id, documentResp.getId());
|
||||
|
||||
// test path with utf-8 encoded param (eg. ¢ => )
|
||||
String folderC = "folder" + System.currentTimeMillis() + " ¢";
|
||||
String folderC_Id = createFolder(user1, folderB_Id, folderC).getId();
|
||||
|
||||
params = Collections.singletonMap("relativePath", "/"+folderA+"/"+folderB+"/"+folderC);
|
||||
response = getSingle(NodesEntityResource.class, user1, Nodes.PATH_MY, params, 200);
|
||||
folderResp = jacksonUtil.parseEntry(response.getJsonResponse(), Folder.class);
|
||||
assertEquals(folderC_Id, folderResp.getId());
|
||||
|
||||
// -ve test - get info for unknown node should return 404
|
||||
getSingle(NodesEntityResource.class, user1, UUID.randomUUID().toString(), null, 404);
|
||||
|
||||
@@ -673,8 +702,13 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(user2);
|
||||
getSingle(NodesEntityResource.class, user2, myFilesNodeId, null, 403);
|
||||
|
||||
// -ve test - try to get node info using relative path to unknown node
|
||||
params = Collections.singletonMap("relativePath", folderA+"/unknown");
|
||||
getSingle(NodesEntityResource.class, user1, Nodes.PATH_MY, params, 404);
|
||||
|
||||
// -ve test - try to get node info using relative path to node for which user does not have read permission
|
||||
params = Collections.singletonMap("relativePath", "User Homes/"+user2);
|
||||
getSingle(NodesEntityResource.class, user1, Nodes.PATH_ROOT, params, 403);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user