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)
126378 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 120059 jvonka: FileFolder API - NodeApiTest - add tests (+ve & -ve) to update node information RA-639 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126724 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1069,7 +1069,7 @@ public class NodesImpl implements Nodes
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException("Failed to change (specialise) the node type - from "+nodeTypeQName+" to "+destNodeTypeQName);
|
throw new InvalidArgumentException("Failed to change (specialise) node type - from "+nodeTypeQName+" to "+destNodeTypeQName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1130,8 +1130,15 @@ public class NodesImpl implements Nodes
|
|||||||
|
|
||||||
if (props.size() > 0)
|
if (props.size() > 0)
|
||||||
{
|
{
|
||||||
// update node properties - note: null will unset the specified property
|
try
|
||||||
nodeService.addProperties(nodeRef, props);
|
{
|
||||||
|
// update node properties - note: null will unset the specified property
|
||||||
|
nodeService.addProperties(nodeRef, props);
|
||||||
|
}
|
||||||
|
catch (DuplicateChildNodeNameException dcne)
|
||||||
|
{
|
||||||
|
throw new ConstraintViolatedException(dcne.getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return getFolderOrDocument(nodeRef.getId(), parameters);
|
return getFolderOrDocument(nodeRef.getId(), parameters);
|
||||||
|
@@ -745,7 +745,7 @@ public class NodeApiTest extends AbstractBaseApiTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests delete (folder or file).
|
* Tests delete (file or folder)
|
||||||
* <p>DELETE:</p>
|
* <p>DELETE:</p>
|
||||||
* {@literal <host>:<port>/alfresco/api/-default-/public/alfresco/versions/1/nodes/<nodeId>}
|
* {@literal <host>:<port>/alfresco/api/-default-/public/alfresco/versions/1/nodes/<nodeId>}
|
||||||
*/
|
*/
|
||||||
@@ -960,6 +960,199 @@ public class NodeApiTest extends AbstractBaseApiTest
|
|||||||
post(postUrl, user1, toJsonAsStringNonNull(d1), 409);
|
post(postUrl, user1, toJsonAsStringNonNull(d1), 409);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests update node info (file or folder)
|
||||||
|
* <p>PUT:</p>
|
||||||
|
* {@literal <host>:<port>/alfresco/api/-default-/public/alfresco/versions/1/nodes/<nodeId>}
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testUpdateNodeInfo() throws Exception
|
||||||
|
{
|
||||||
|
AuthenticationUtil.setFullyAuthenticatedUser(user1);
|
||||||
|
|
||||||
|
NodeRef personNodeRef = personService.getPerson(user1);
|
||||||
|
NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personNodeRef);
|
||||||
|
|
||||||
|
UserInfo expectedUser = new UserInfo(user1, user1+" "+user1);
|
||||||
|
|
||||||
|
String postUrl = "nodes/"+myFilesNodeRef.getId()+"/children";
|
||||||
|
|
||||||
|
String folderName = "My Folder";
|
||||||
|
|
||||||
|
// create folder
|
||||||
|
|
||||||
|
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.setAspectNames(Collections.singletonList("cm:auditable"));
|
||||||
|
|
||||||
|
f1.setCreatedByUser(expectedUser);
|
||||||
|
f1.setModifiedByUser(expectedUser);
|
||||||
|
|
||||||
|
f1.expected(folderResp);
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
|
||||||
|
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.setAspectNames(Collections.singletonList("cm:auditable"));
|
||||||
|
|
||||||
|
d1.setCreatedByUser(expectedUser);
|
||||||
|
d1.setModifiedByUser(expectedUser);
|
||||||
|
|
||||||
|
d1.getContent().setMimeTypeName("Plain Text");
|
||||||
|
d1.getContent().setSizeInBytes(0L);
|
||||||
|
d1.getContent().setEncoding("UTF-8");
|
||||||
|
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
// update file - name (=> rename within current folder)
|
||||||
|
|
||||||
|
Document dUpdate = new Document();
|
||||||
|
dUpdate.setName("d1b.txt");
|
||||||
|
|
||||||
|
response = put("nodes", user1, dId, toJsonAsStringNonNull(dUpdate), null, 200);
|
||||||
|
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
|
||||||
|
d1.setName("d1b.txt");
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
// update file - add some properties
|
||||||
|
|
||||||
|
Map<String,Object> props = new HashMap<>();
|
||||||
|
props.put("cm:title","my file title");
|
||||||
|
props.put("cm:description","my file description");
|
||||||
|
|
||||||
|
dUpdate = new Document();
|
||||||
|
dUpdate.setProperties(props);
|
||||||
|
|
||||||
|
response = put("nodes", user1, dId, toJsonAsStringNonNull(dUpdate), null, 200);
|
||||||
|
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
|
||||||
|
d1.setProperties(props);
|
||||||
|
d1.setAspectNames(Arrays.asList("cm:auditable","cm:titled"));
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
// update file - add versionable aspect
|
||||||
|
|
||||||
|
dUpdate = new Document();
|
||||||
|
dUpdate.setAspectNames(Arrays.asList("cm:auditable","cm:titled","cm:versionable"));
|
||||||
|
|
||||||
|
response = put("nodes", user1, dId, toJsonAsStringNonNull(dUpdate), null, 200);
|
||||||
|
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
|
||||||
|
//d1.getProperties().put("cm:versionLabel","1.0"); // TODO ... fix api ?!
|
||||||
|
d1.setAspectNames(Arrays.asList("cm:auditable","cm:titled","cm:versionable"));
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
response = getSingle("nodes", user1, dId, 200);
|
||||||
|
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
|
||||||
|
d1.getProperties().put("cm:versionLabel","1.0");
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
// update file - remove titled aspect (and it's related aspect properties)
|
||||||
|
|
||||||
|
dUpdate = new Document();
|
||||||
|
dUpdate.setAspectNames(Arrays.asList("cm:auditable","cm:versionable"));
|
||||||
|
|
||||||
|
response = put("nodes", user1, dId, toJsonAsStringNonNull(dUpdate), null, 200);
|
||||||
|
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
|
||||||
|
d1.getProperties().remove("cm:title");
|
||||||
|
d1.getProperties().remove("cm:description");
|
||||||
|
d1.setAspectNames(Arrays.asList("cm:auditable","cm:versionable"));
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
// update folder - rename and add some properties
|
||||||
|
|
||||||
|
props = new HashMap<>();
|
||||||
|
props.put("cm:title","my folder title");
|
||||||
|
props.put("cm:description","my folder description");
|
||||||
|
|
||||||
|
folderName = "My Updated Folder";
|
||||||
|
Folder fUpdate = new Folder();
|
||||||
|
fUpdate.setProperties(props);
|
||||||
|
fUpdate.setName(folderName);
|
||||||
|
|
||||||
|
response = put("nodes", user1, fId, toJsonAsStringNonNull(fUpdate), null, 200);
|
||||||
|
folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
|
||||||
|
f1.setName(folderName);
|
||||||
|
f1.setAspectNames(Arrays.asList("cm:auditable","cm:titled"));
|
||||||
|
f1.setProperties(props);
|
||||||
|
f1.expected(folderResp);
|
||||||
|
|
||||||
|
// update folder - unset a property
|
||||||
|
|
||||||
|
props = new HashMap<>();
|
||||||
|
props.put("cm:title",null);
|
||||||
|
|
||||||
|
fUpdate = new Folder();
|
||||||
|
fUpdate.setProperties(props);
|
||||||
|
|
||||||
|
response = put("nodes", user1, fId, toJsonAsStringNonNull(fUpdate), null, 200);
|
||||||
|
folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
|
||||||
|
f1.getProperties().remove("cm:title");
|
||||||
|
f1.expected(folderResp);
|
||||||
|
|
||||||
|
// update folder - specialise node type
|
||||||
|
|
||||||
|
fUpdate = new Folder();
|
||||||
|
fUpdate.setNodeType("app:glossary");
|
||||||
|
|
||||||
|
response = put("nodes", user1, fId, toJsonAsStringNonNull(fUpdate), null, 200);
|
||||||
|
folderResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
|
||||||
|
|
||||||
|
f1.setNodeType("app:glossary");
|
||||||
|
f1.expected(folderResp);
|
||||||
|
|
||||||
|
// -ve test - ignore unknown property
|
||||||
|
props = new HashMap<>();
|
||||||
|
props.put("cm:xyz","my unknown property");
|
||||||
|
dUpdate = new Document();
|
||||||
|
dUpdate.setProperties(props);
|
||||||
|
response = put("nodes", user1, dId, toJsonAsStringNonNull(dUpdate), null, 200);
|
||||||
|
documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||||
|
d1.expected(documentResp);
|
||||||
|
|
||||||
|
// -ve test - duplicate name
|
||||||
|
dUpdate = new Document();
|
||||||
|
dUpdate.setName(folderName);
|
||||||
|
put("nodes", user1, dId, toJsonAsStringNonNull(dUpdate), null, 409);
|
||||||
|
|
||||||
|
// -ve test - unknown node id
|
||||||
|
dUpdate = new Document();
|
||||||
|
dUpdate.setName("some.txt");
|
||||||
|
put("nodes", user1, UUID.randomUUID().toString(), toJsonAsStringNonNull(dUpdate), null, 404);
|
||||||
|
|
||||||
|
// -ve test - generalise node type
|
||||||
|
fUpdate = new Folder();
|
||||||
|
fUpdate.setNodeType("cm:folder");
|
||||||
|
put("nodes", user1, fId, toJsonAsStringNonNull(fUpdate), null, 400);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO add test to create multiple folders & empty files (within same parent folder)
|
// TODO add test to create multiple folders & empty files (within same parent folder)
|
||||||
|
|
||||||
// TODO add test for file/folder links - creating, getting, listing, deleting
|
// TODO add test for file/folder links - creating, getting, listing, deleting
|
||||||
|
Reference in New Issue
Block a user