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)
126369 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 119798 jvonka: FileFolder API - NodeApiTest - add tests (+ve & -ve) to create empty file node - TODO subsequently show that file content can be updated RA-636 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126714 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -29,6 +29,10 @@ public class ContentInfo
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
public void setMimeType(String mimeType) {
|
||||
this.mimeType = mimeType;
|
||||
}
|
||||
|
||||
public String getMimeTypeName() {
|
||||
return mimeTypeName;
|
||||
}
|
||||
|
@@ -46,8 +46,6 @@ import org.alfresco.service.namespace.QName;
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class Document extends Node
|
||||
{
|
||||
private ContentInfo contentInfo;
|
||||
|
||||
public Document() {
|
||||
super();
|
||||
}
|
||||
@@ -62,22 +60,12 @@ public class Document extends Node
|
||||
ContentData cd = (ContentData)val;
|
||||
String mimeType = cd.getMimetype();
|
||||
String mimeTypeName = sr.getMimetypeService().getDisplaysByMimetype().get(mimeType);
|
||||
this.contentInfo = new ContentInfo(mimeType, mimeTypeName, cd.getSize(), cd.getEncoding());
|
||||
contentInfo = new ContentInfo(mimeType, mimeTypeName, cd.getSize(), cd.getEncoding());
|
||||
}
|
||||
|
||||
this.isFolder = false;
|
||||
}
|
||||
|
||||
public ContentInfo getContent()
|
||||
{
|
||||
return contentInfo;
|
||||
}
|
||||
|
||||
public void setContent(ContentInfo contentInfo)
|
||||
{
|
||||
this.contentInfo = contentInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
|
@@ -54,6 +54,12 @@ public class Folder extends Node
|
||||
this.isFolder = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContentInfo getContent()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
|
@@ -299,6 +299,19 @@ public class Node implements Comparable<Node>
|
||||
+ modifiedByUser + ", pathInfo =" + pathInfo +"]";
|
||||
}
|
||||
|
||||
protected ContentInfo contentInfo;
|
||||
|
||||
public ContentInfo getContent()
|
||||
{
|
||||
return contentInfo;
|
||||
}
|
||||
|
||||
public void setContent(ContentInfo contentInfo)
|
||||
{
|
||||
this.contentInfo = contentInfo;
|
||||
}
|
||||
|
||||
|
||||
// TODO for backwards compat' - set explicitly when needed (ie. favourites) (note: we could choose to have separate old Node/NodeImpl etc)
|
||||
|
||||
protected String title;
|
||||
|
@@ -785,6 +785,94 @@ public class NodeApiTest extends AbstractBaseApiTest
|
||||
post(postUrl, user1, toJsonAsStringNonNull(f1), 409);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests create empty file.
|
||||
* <p>POST:</p>
|
||||
* {@literal <host>:<port>/alfresco/api/-default-/public/alfresco/versions/1/nodes/<nodeId>/children}
|
||||
*/
|
||||
@Test
|
||||
public void testCreateEmptyFile() throws Exception
|
||||
{
|
||||
AuthenticationUtil.setFullyAuthenticatedUser(user1);
|
||||
|
||||
NodeRef personNodeRef = personService.getPerson(user1);
|
||||
NodeRef myFilesNodeRef = repositoryHelper.getUserHome(personNodeRef);
|
||||
|
||||
String postUrl = "nodes/"+myFilesNodeRef.getId()+"/children";
|
||||
|
||||
Document d1 = new Document();
|
||||
d1.setName("d1.txt");
|
||||
d1.setNodeType("cm:content");
|
||||
ContentInfo ci = new ContentInfo();
|
||||
ci.setMimeType("text/plain");
|
||||
d1.setContent(ci);
|
||||
|
||||
// create empty file
|
||||
HttpResponse response = post(postUrl, user1, toJsonAsStringNonNull(d1), 201);
|
||||
|
||||
Document d1Created = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||
assertNotNull(d1Created.getId());
|
||||
assertEquals("d1.txt",d1Created.getName());
|
||||
assertEquals("cm:content",d1Created.getNodeType());
|
||||
assertEquals(false, d1Created.getIsFolder());
|
||||
assertNotNull(d1Created.getCreatedAt());
|
||||
assertEquals(user1,d1Created.getCreatedByUser().getUserName());
|
||||
assertNotNull(d1Created.getModifiedAt());
|
||||
assertEquals(user1,d1Created.getModifiedByUser().getUserName());
|
||||
assertEquals(myFilesNodeRef.getId(), d1Created.getParentId());
|
||||
assertTrue(d1Created.getAspectNames().contains("cm:auditable"));
|
||||
assertEquals(0L, d1Created.getContent().getSizeInBytes());
|
||||
assertEquals("text/plain", d1Created.getContent().getMimeType());
|
||||
assertEquals("Plain Text", d1Created.getContent().getMimeTypeName());
|
||||
assertEquals("UTF-8", d1Created.getContent().getEncoding());
|
||||
assertNull(d1Created.getProperties());
|
||||
assertNull(d1Created.getPath());
|
||||
assertNull(d1Created.getIsLink());
|
||||
|
||||
// create empty file with properties
|
||||
Map<String,Object> props = new HashMap<>();
|
||||
props.put("cm:title","my file title");
|
||||
props.put("cm:description","my file description");
|
||||
|
||||
Document d2 = new Document();
|
||||
d2.setName("d2.txt");
|
||||
d2.setNodeType("cm:content");
|
||||
d2.setProperties(props);
|
||||
|
||||
response = post(postUrl, user1, toJsonAsStringNonNull(d2), 201);
|
||||
Document d2Created = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
|
||||
assertNotNull(d2Created.getId());
|
||||
|
||||
assertTrue(d2Created.getAspectNames().contains("cm:auditable"));
|
||||
assertTrue(d2Created.getAspectNames().contains("cm:titled"));
|
||||
assertEquals(d2Created.getProperties().get("cm:title"),"my file title");
|
||||
assertEquals(d2Created.getProperties().get("cm:description"),"my file description");
|
||||
|
||||
// -ve test - name is mandatory
|
||||
Document invalid = new Document();
|
||||
invalid.setNodeType("cm:content");
|
||||
post(postUrl, user1, toJsonAsStringNonNull(invalid), 400);
|
||||
|
||||
// -ve test - node type is mandatory
|
||||
invalid = new Document();
|
||||
invalid.setName("my file.txt");
|
||||
post(postUrl, user1, toJsonAsStringNonNull(invalid), 400);
|
||||
|
||||
// -ve test - invalid (eg. not a folder) parent id
|
||||
Document d3 = new Document();
|
||||
d3.setName("d3.txt");
|
||||
d3.setNodeType("cm:content");
|
||||
post("nodes/"+personNodeRef.getId()+"/children", user1, toJsonAsStringNonNull(d3), 400);
|
||||
|
||||
// -ve test - unknown parent folder node id
|
||||
post("nodes/"+UUID.randomUUID().toString()+"/children", user1, toJsonAsStringNonNull(d3), 404);
|
||||
|
||||
// -ve test - duplicate name
|
||||
post(postUrl, user1, toJsonAsStringNonNull(d1), 409);
|
||||
}
|
||||
|
||||
// TODO add test to create multiple folders & empty files (within same parent folder)
|
||||
|
||||
// TODO add test for file/folder links - creating, getting, listing, deleting
|
||||
|
||||
private String getChildrenUrl(NodeRef parentNodeRef)
|
||||
|
Reference in New Issue
Block a user