Search in sources :

Example 26 with Folder

use of org.alfresco.rest.api.tests.client.data.Folder in project alfresco-remote-api by Alfresco.

the class NodeApiTest method testLockFileCreatedByDeletedUser.

@Test
public void testLockFileCreatedByDeletedUser() throws Exception {
    // Create temp user
    String user = createUser("userRND-" + RUNID, "userRNDPassword", networkOne);
    setRequestContext(user);
    // Create folder
    Folder folderResp = createFolder(Nodes.PATH_MY, "folderRND" + RUNID);
    String folderId = folderResp.getId();
    // Create doc d1
    String d1Name = "content" + RUNID + "_1l";
    Document d1 = createTextFile(folderId, d1Name, "The quick brown fox jumps over the lazy dog 1.");
    String d1Id = d1.getId();
    setRequestContext(networkAdmin);
    transactionHelper.doInTransaction(() -> {
        deleteUser(user, networkOne);
        return null;
    });
    // Lock d1 document
    LockInfo lockInfo = new LockInfo();
    lockInfo.setTimeToExpire(30);
    lockInfo.setType("FULL");
    lockInfo.setLifetime("PERSISTENT");
    HttpResponse response = post(getNodeOperationUrl(d1Id, "lock"), toJsonAsStringNonNull(lockInfo), null, 200);
    Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    // Check that the lock was successful - from default response
    assertEquals(d1Name, documentResp.getName());
    assertEquals(d1Id, documentResp.getId());
    assertEquals(LockType.READ_ONLY_LOCK.toString(), documentResp.getProperties().get("cm:lockType"));
    assertNotNull(documentResp.getProperties().get("cm:lockOwner"));
    assertNull(documentResp.getIsLocked());
    // Get node info (ensure rollback didn't happen)
    Map<String, String> params = Collections.singletonMap("include", "isLocked");
    response = getSingle(NodesEntityResource.class, d1Id, params, 200);
    documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    // Check that the lock was successful - from get info call response
    assertEquals(d1Name, documentResp.getName());
    assertEquals(d1Id, documentResp.getId());
    assertEquals(LockType.READ_ONLY_LOCK.toString(), documentResp.getProperties().get("cm:lockType"));
    assertNotNull(documentResp.getProperties().get("cm:lockOwner"));
    assertTrue(documentResp.getIsLocked());
    // Clean up
    unlock(d1Id);
    // Get node info (ensure rollback didn't happen)
    response = getSingle(NodesEntityResource.class, d1Id, params, 200);
    documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    // Check that the unlock was successful
    assertEquals(d1Name, documentResp.getName());
    assertEquals(d1Id, documentResp.getId());
    assertEquals(null, documentResp.getProperties().get("cm:lockType"));
    assertNull(documentResp.getProperties().get("cm:lockOwner"));
    assertFalse(documentResp.getIsLocked());
    deleteNode(folderId);
}
Also used : HttpResponse(org.alfresco.rest.api.tests.client.HttpResponse) LockInfo(org.alfresco.rest.api.model.LockInfo) NodesEntityResource(org.alfresco.rest.api.nodes.NodesEntityResource) Folder(org.alfresco.rest.api.tests.client.data.Folder) Document(org.alfresco.rest.api.tests.client.data.Document) Test(org.junit.Test) AbstractSingleNetworkSiteTest(org.alfresco.rest.AbstractSingleNetworkSiteTest)

Example 27 with Folder

use of org.alfresco.rest.api.tests.client.data.Folder in project alfresco-remote-api by Alfresco.

the class NodeApiTest method testUpdateFileWithBinaryUpload.

/**
 * Tests update file content
 * <p>PUT:</p>
 * {@literal <host>:<port>/alfresco/api/-default-/public/alfresco/versions/1/nodes/<nodeId>/content}
 */
@Test
public void testUpdateFileWithBinaryUpload() throws Exception {
    setRequestContext(user1);
    String myNodeId = getMyNodeId();
    String folderName = "f1-testUpdateFileWithBinaryUpload-" + RUNID;
    Folder folderResp = createFolder(myNodeId, folderName);
    String f1_nodeId = folderResp.getId();
    String anoNodeName = "another";
    createFolder(f1_nodeId, anoNodeName);
    Document doc = new Document();
    final String docName = "testdoc.txt";
    doc.setName(docName);
    doc.setNodeType(TYPE_CM_CONTENT);
    doc.setProperties(Collections.singletonMap("cm:title", (Object) "test title"));
    ContentInfo contentInfo = new ContentInfo();
    doc.setContent(contentInfo);
    // create an empty file within F1 folder
    HttpResponse response = post(getNodeChildrenUrl(f1_nodeId), toJsonAsStringNonNull(doc), 201);
    Document docResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    assertEquals(docName, docResp.getName());
    assertNotNull(docResp.getContent());
    assertEquals(0, docResp.getContent().getSizeInBytes().intValue());
    assertEquals(MimetypeMap.MIMETYPE_TEXT_PLAIN, docResp.getContent().getMimeType());
    // Default encoding
    assertEquals("UTF-8", docResp.getContent().getEncoding());
    // Update the empty node's content
    String content = "The quick brown fox jumps over the lazy dog.";
    ByteArrayInputStream inputStream = new ByteArrayInputStream(content.getBytes());
    File txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt");
    BinaryPayload payload = new BinaryPayload(txtFile);
    // Try to update a folder!
    putBinary(getNodeContentUrl(f1_nodeId), payload, null, null, 400);
    // Try to update a non-existent file
    putBinary(getNodeContentUrl(UUID.randomUUID().toString()), payload, null, null, 404);
    final String url = getNodeContentUrl(docResp.getId());
    // Update the empty file
    response = putBinary(url, payload, null, null, 200);
    docResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    assertEquals(docName, docResp.getName());
    assertNotNull(docResp.getId());
    assertNotNull(docResp.getCreatedAt());
    assertNotNull(docResp.getCreatedByUser());
    assertNotNull(docResp.getModifiedAt());
    assertNotNull(docResp.getModifiedByUser());
    assertFalse(docResp.getIsFolder());
    assertTrue(docResp.getIsFile());
    assertNull(docResp.getIsLink());
    assertEquals(TYPE_CM_CONTENT, docResp.getNodeType());
    assertNotNull(docResp.getParentId());
    assertEquals(f1_nodeId, docResp.getParentId());
    assertNotNull(docResp.getProperties());
    assertNotNull(docResp.getAspectNames());
    contentInfo = docResp.getContent();
    assertNotNull(contentInfo);
    assertNotNull(contentInfo.getEncoding());
    assertTrue(contentInfo.getSizeInBytes() > 0);
    assertEquals(MimetypeMap.MIMETYPE_TEXT_PLAIN, contentInfo.getMimeType());
    assertNotNull(contentInfo.getMimeTypeName());
    assertEquals("ISO-8859-1", contentInfo.getEncoding());
    // path is not part of the default response
    assertNull(docResp.getPath());
    // Download the file
    response = getSingle(url, user1, null, 200);
    assertEquals(content, response.getResponse());
    // Update the node's content again. Also make the response return the path!
    content = "The quick brown fox jumps over the lazy dog updated !";
    inputStream = new ByteArrayInputStream(content.getBytes());
    txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt");
    payload = new BinaryPayload(txtFile);
    response = putBinary(url + "?include=path", payload, null, null, 200);
    docResp = jacksonUtil.parseEntry(response.getJsonResponse(), Document.class);
    assertEquals(docName, docResp.getName());
    assertNotNull(docResp.getContent());
    assertTrue(docResp.getContent().getSizeInBytes().intValue() > 0);
    assertEquals(MimetypeMap.MIMETYPE_TEXT_PLAIN, docResp.getContent().getMimeType());
    assertEquals("ISO-8859-1", docResp.getContent().getEncoding());
    PathInfo pathInfo = docResp.getPath();
    assertNotNull(pathInfo);
    assertTrue(pathInfo.getIsComplete());
    List<ElementInfo> pathElements = pathInfo.getElements();
    assertNotNull(pathElements);
    assertTrue(pathElements.size() > 0);
    // check the last element is F1
    assertEquals(folderResp.getName(), pathElements.get(pathElements.size() - 1).getName());
    // Download the file
    response = getSingle(url, user1, null, 200);
    assertEquals(content, response.getResponse());
    // Update the node's content again. Also rename the file !
    content = "The quick brown fox jumps over the lazy dog updated again !";
    inputStream = new ByteArrayInputStream(content.getBytes());
    txtFile = TempFileProvider.createTempFile(inputStream, getClass().getSimpleName(), ".txt");
    payload = new BinaryPayload(txtFile);
    String docName2 = "hello-world.txt";
    Map params = new HashMap<>();
    params.put(Nodes.PARAM_NAME, docName2);
    response = putBinary(url, payload, null, params, 200);
    docResp = jacksonUtil.parseEntry(response.getJsonResponse(), Document.class);
    assertEquals(docName2, docResp.getName());
    // Download the file
    response = getSingle(url, user1, null, 200);
    assertEquals(content, response.getResponse());
    // -ve - optional "name" is invalid
    params = new HashMap<>();
    params.put(Nodes.PARAM_NAME, "hello/world.txt");
    payload = new BinaryPayload(txtFile);
    putBinary(url, payload, null, params, 422);
    // -ve - optional "name" already exists ...
    params = new HashMap<>();
    params.put(Nodes.PARAM_NAME, anoNodeName);
    payload = new BinaryPayload(txtFile);
    putBinary(url, payload, null, params, 409);
    // -ve - try to  update content using multi-part form data
    payload = new BinaryPayload(txtFile, "multipart/form-data", null);
    putBinary(url, payload, null, null, 415);
    // -ve - try to invalid media type argument (when parsing request)
    payload = new BinaryPayload(txtFile, "/jpeg", null);
    putBinary(url, payload, null, null, 415);
}
Also used : ElementInfo(org.alfresco.rest.api.tests.client.data.PathInfo.ElementInfo) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) HttpResponse(org.alfresco.rest.api.tests.client.HttpResponse) Folder(org.alfresco.rest.api.tests.client.data.Folder) Document(org.alfresco.rest.api.tests.client.data.Document) BinaryPayload(org.alfresco.rest.api.tests.client.PublicApiHttpClient.BinaryPayload) ContentInfo(org.alfresco.rest.api.tests.client.data.ContentInfo) ByteArrayInputStream(java.io.ByteArrayInputStream) JSONObject(org.json.simple.JSONObject) PathInfo(org.alfresco.rest.api.tests.client.data.PathInfo) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) MultiValueMap(org.apache.commons.collections.map.MultiValueMap) Map(java.util.Map) MimetypeMap(org.alfresco.repo.content.MimetypeMap) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Test(org.junit.Test) AbstractSingleNetworkSiteTest(org.alfresco.rest.AbstractSingleNetworkSiteTest)

Example 28 with Folder

use of org.alfresco.rest.api.tests.client.data.Folder in project alfresco-remote-api by Alfresco.

the class NodeApiTest method createContentWithAllParametersAccepted.

@Test
public void createContentWithAllParametersAccepted() throws Exception {
    setRequestContext(user1);
    // Let's start with creating a folder in our home folder.
    String folderName = "My Folder" + GUID.generate();
    // -my- (eg. User's Home for on-prem)
    String myNodeId = getMyNodeId();
    Folder folder = new Folder();
    folder.setName(folderName);
    folder.setNodeType(TYPE_CM_FOLDER);
    HttpResponse response = post(getNodeChildrenUrl(myNodeId), toJsonAsStringNonNull(folder), 201);
    Folder folderResponse = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Folder.class);
    // Check the upload response
    assertEquals(folderName, folderResponse.getName());
    assertEquals(TYPE_CM_FOLDER, folderResponse.getNodeType());
    // Let's now create an empty file within our home folder.
    String fileName = "myfile" + GUID.generate() + ".txt";
    Document document = new Document();
    document.setName(fileName);
    document.setNodeType(TYPE_CM_CONTENT);
    response = post(getNodeChildrenUrl(myNodeId), toJsonAsStringNonNull(document), 201);
    Document documentResponse = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    // Check the upload response
    assertEquals(fileName, documentResponse.getName());
    assertEquals(TYPE_CM_CONTENT, documentResponse.getNodeType());
    // multipart/form-data upload with known parameters
    /*
         * case "name": case "filedata": case "autorename": case "nodetype":
         * case "overwrite": case "majorversion": case "comment": case
         * "relativepath": case "renditions":
         */
    fileName = "quick-2.pdf";
    File file = getResourceFile(fileName);
    MultiPartBuilder multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file));
    multiPartBuilder.setAutoRename(true);
    multiPartBuilder.setNodeType(TYPE_CM_CONTENT);
    multiPartBuilder.setOverwrite(false);
    multiPartBuilder.setMajorVersion(true);
    multiPartBuilder.setDescription("test");
    // multiPartBuilder.setRelativePath("/");
    multiPartBuilder.setRenditions(Collections.singletonList("doclib"));
    MultiPartRequest reqBody = multiPartBuilder.build();
    response = post(getNodeChildrenUrl(myNodeId), reqBody.getBody(), null, reqBody.getContentType(), 201);
    document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    ContentInfo contentInfo = document.getContent();
    assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
    assertEquals("UTF-8", contentInfo.getEncoding());
    // multipart/form-data upload with unknown parameters
    /*
         * 
         * setPropeties custom
         */
    document.setNodeType("custom:destination");
    multiPartBuilder = MultiPartBuilder.create().setFileData(new FileData(fileName, file));
    multiPartBuilder.setAutoRename(true);
    multiPartBuilder.setNodeType("custom:destination");
    Map<String, String> props = new MultiValueMap();
    props.put("cm:title", "test title");
    props.put("custom:locations", "loc1");
    props.put("custom:locations", "loc2");
    props.put("custom:locations", "loc3");
    multiPartBuilder.setProperties(props);
    reqBody = multiPartBuilder.build();
    response = post(getNodeChildrenUrl(myNodeId), reqBody.getBody(), null, reqBody.getContentType(), 201);
    document = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    contentInfo = document.getContent();
    assertEquals(MimetypeMap.MIMETYPE_PDF, contentInfo.getMimeType());
    assertEquals("UTF-8", contentInfo.getEncoding());
}
Also used : MultiPartBuilder(org.alfresco.rest.api.tests.util.MultiPartBuilder) ContentInfo(org.alfresco.rest.api.tests.client.data.ContentInfo) HttpResponse(org.alfresco.rest.api.tests.client.HttpResponse) MultiPartRequest(org.alfresco.rest.api.tests.util.MultiPartBuilder.MultiPartRequest) Folder(org.alfresco.rest.api.tests.client.data.Folder) Document(org.alfresco.rest.api.tests.client.data.Document) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) FileData(org.alfresco.rest.api.tests.util.MultiPartBuilder.FileData) MultiValueMap(org.apache.commons.collections.map.MultiValueMap) Test(org.junit.Test) AbstractSingleNetworkSiteTest(org.alfresco.rest.AbstractSingleNetworkSiteTest)

Example 29 with Folder

use of org.alfresco.rest.api.tests.client.data.Folder in project alfresco-remote-api by Alfresco.

the class NodeApiTest method testPrimaryPath.

@Test
public void testPrimaryPath() throws Exception {
    setRequestContext(user1);
    AuthenticationUtil.setFullyAuthenticatedUser(user1);
    String myNodeId = getMyNodeId();
    String nameA = "folder_A";
    String nameA01 = "folder_A01";
    String nameA02 = "folder_A02";
    String nameA03 = "folder_A03";
    String nameB = "folder_B";
    // /Company Home/User Homes/user<timestamp>/folder_A/folder_B
    Folder folderA = createFolder(myNodeId, nameA);
    Folder folderB = createFolder(folderA.getId(), nameB);
    NodeRef folderANodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folderA.getId());
    NodeRef folderBNodeRef = new NodeRef(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, folderB.getId());
    folderA.setName(nameA01);
    put(URL_NODES, folderA.getId(), toJsonAsStringNonNull(folderA), null, 200);
    Path folderAPath = nodeService.getPath(folderANodeRef);
    Path.ChildAssocElement pathElement = (Path.ChildAssocElement) folderAPath.last();
    String localNameForFolderA = pathElement.getRef().getQName().getLocalName();
    assertFalse(nameA.equals(localNameForFolderA));
    folderA.setName(nameA02);
    Map<String, Object> properties = new HashMap<>();
    properties.put("cm:name", nameA03);
    folderA.setProperties(properties);
    put(URL_NODES, folderA.getId(), toJsonAsStringNonNull(folderA), null, 200);
    folderAPath = nodeService.getPath(folderANodeRef);
    pathElement = (Path.ChildAssocElement) folderAPath.last();
    localNameForFolderA = pathElement.getRef().getQName().getLocalName();
    assertFalse(nameA.equals(localNameForFolderA));
    assertFalse(nameA03.equals(localNameForFolderA));
    assertTrue(nameA02.equals(localNameForFolderA));
    Path folderBPath = nodeService.getPath(folderBNodeRef);
    Path.ChildAssocElement pathBLastElement = (Path.ChildAssocElement) folderBPath.last();
    String currentPath = folderBPath.toDisplayPath(nodeService, permissionService) + "/" + pathBLastElement.getRef().getQName().getLocalName();
    String expectedPath = "/Company Home/User Homes/" + user1 + "/" + nameA02 + "/" + nameB;
    assertTrue(currentPath.equals(expectedPath));
}
Also used : Path(org.alfresco.service.cmr.repository.Path) NodeRef(org.alfresco.service.cmr.repository.NodeRef) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) JSONObject(org.json.simple.JSONObject) Folder(org.alfresco.rest.api.tests.client.data.Folder) Test(org.junit.Test) AbstractSingleNetworkSiteTest(org.alfresco.rest.AbstractSingleNetworkSiteTest)

Example 30 with Folder

use of org.alfresco.rest.api.tests.client.data.Folder in project alfresco-remote-api by Alfresco.

the class NodeApiTest method testLinkCRUD.

// note: app:folderlink & app:filelink both extend cm:link (which in turn extends cm:cmobject)
// (see applicationModel.xml / contentModel.xml)
@Test
public void testLinkCRUD() throws Exception {
    setRequestContext(user1);
    String myNodeId = getMyNodeId();
    UserInfo expectedUser = new UserInfo(user1);
    String myChildrenUrl = getNodeChildrenUrl(myNodeId);
    // create folder f1
    Folder folderResp = createFolder(myNodeId, "f1 " + RUNID);
    String f1Id = folderResp.getId();
    // create empty file d1 in f1
    Document d1 = new Document();
    d1.setName("d1.txt");
    d1.setNodeType(TYPE_CM_CONTENT);
    HttpResponse response = post(getNodeChildrenUrl(f1Id), toJsonAsStringNonNull(d1), 201);
    Document documentResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    String d1Id = documentResp.getId();
    // create folder f2
    folderResp = createFolder(myNodeId, "f2 " + RUNID);
    String f2Id = folderResp.getId();
    // create folder link node in f2 (pointing to f1)
    String nodeName = "f1 link";
    String nodeType = "app:folderlink";
    Map<String, Object> props = new HashMap<>();
    props.put("cm:destination", f1Id);
    Node nodeResp = createNode(f2Id, nodeName, nodeType, props);
    String n1Id = nodeResp.getId();
    Node n1 = new Node();
    n1.setName(nodeName);
    n1.setNodeType(nodeType);
    n1.setIsFolder(true);
    // note: parent of the link (not where it is pointing)
    n1.setParentId(f2Id);
    n1.setAspectNames(Collections.singletonList("cm:auditable"));
    n1.setProperties(props);
    n1.setCreatedByUser(expectedUser);
    n1.setModifiedByUser(expectedUser);
    n1.expected(nodeResp);
    // get node info
    response = getSingle(NodesEntityResource.class, n1Id, null, 200);
    nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class);
    n1.expected(nodeResp);
    // create file link node in f2 pointing to d1
    nodeName = "d1 link";
    nodeType = "app:filelink";
    props = new HashMap<>();
    props.put("cm:destination", d1Id);
    nodeResp = createNode(f2Id, nodeName, nodeType, props);
    String n2Id = nodeResp.getId();
    Node n2 = new Node();
    n2.setName(nodeName);
    n2.setNodeType(nodeType);
    n2.setIsFolder(false);
    // note: parent of the link (not where it is pointing)
    n2.setParentId(f2Id);
    n2.setAspectNames(Collections.singletonList("cm:auditable"));
    n2.setProperties(props);
    n2.setCreatedByUser(expectedUser);
    n2.setModifiedByUser(expectedUser);
    n2.expected(nodeResp);
    // get node info
    response = getSingle(NodesEntityResource.class, n2Id, null, 200);
    nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class);
    n2.expected(nodeResp);
    // update node - rename
    String updatedName = "f1 link renamed";
    Node nUpdate = new Node();
    nUpdate.setName(updatedName);
    response = put(URL_NODES, n1Id, toJsonAsStringNonNull(nUpdate), null, 200);
    nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Document.class);
    n1.setName(updatedName);
    n1.expected(nodeResp);
    // filtering, via where clause (nodeType + optionally including sub-types)
    List<String> linkIds = Arrays.asList(n1Id, n2Id);
    Map<String, String> params = new HashMap<>();
    params.put("where", "(nodeType='cm:link')");
    Paging paging = getPaging(0, Integer.MAX_VALUE);
    response = getAll(getNodeChildrenUrl(f2Id), paging, params, 200);
    List<Node> nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class);
    assertEquals(0, nodes.size());
    // filter by including sub-types - note: includesubtypes is case-insensitive
    params = new HashMap<>();
    params.put("where", "(nodeType='cm:link INCLUDESUBTYPES')");
    paging = getPaging(0, Integer.MAX_VALUE);
    response = getAll(getNodeChildrenUrl(f2Id), paging, params, 200);
    nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class);
    assertEquals(linkIds.size(), nodes.size());
    assertTrue(linkIds.contains(nodes.get(0).getId()));
    assertTrue(linkIds.contains(nodes.get(1).getId()));
    params = new HashMap<>();
    params.put("where", "(nodeType='cm:link includeSubTypes')");
    paging = getPaging(0, Integer.MAX_VALUE);
    response = getAll(getNodeChildrenUrl(f2Id), paging, params, 200);
    nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class);
    assertEquals(linkIds.size(), nodes.size());
    assertTrue(linkIds.contains(nodes.get(0).getId()));
    assertTrue(linkIds.contains(nodes.get(1).getId()));
    // delete link
    deleteNode(n1Id);
    // -ve test - delete - cannot delete nonexistent link
    deleteNode(n1Id, 404);
    // -ve test - create - name is mandatory
    Node invalid = new Node();
    invalid.setNodeType("cm:link");
    post(myChildrenUrl, toJsonAsStringNonNull(invalid), 400);
    // -ve test - create - node type is mandatory
    invalid = new Node();
    invalid.setName("my node");
    post(myChildrenUrl, toJsonAsStringNonNull(invalid), 400);
    // -ve test - create - unsupported node type
    invalid = new Node();
    invalid.setName("my node");
    invalid.setNodeType("sys:base");
    post(myChildrenUrl, toJsonAsStringNonNull(invalid), 400);
    // -ve test - create - duplicate name
    post(getNodeChildrenUrl(f2Id), toJsonAsStringNonNull(n2), 409);
    // -ve test - unknown nodeType when filtering
    params = new HashMap<>();
    params.put("where", "(nodeType='my:unknown'");
    getAll(getNodeChildrenUrl(f2Id), paging, params, 400);
    // -ver test - invalid node type localname format and suffix is not ' includesubtypes'
    params = new HashMap<>();
    params.put("where", "(nodeType='cm:link ')");
    getAll(getNodeChildrenUrl(f2Id), paging, params, 400);
    params = new HashMap<>();
    params.put("where", "(nodeType='cm:link blah')");
    getAll(getNodeChildrenUrl(f2Id), paging, params, 400);
}
Also used : HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Node(org.alfresco.rest.api.tests.client.data.Node) RestApiUtil.parsePaging(org.alfresco.rest.api.tests.util.RestApiUtil.parsePaging) Paging(org.alfresco.rest.api.tests.client.PublicApiClient.Paging) ExpectedPaging(org.alfresco.rest.api.tests.client.PublicApiClient.ExpectedPaging) HttpResponse(org.alfresco.rest.api.tests.client.HttpResponse) UserInfo(org.alfresco.rest.api.tests.client.data.UserInfo) NodesEntityResource(org.alfresco.rest.api.nodes.NodesEntityResource) Folder(org.alfresco.rest.api.tests.client.data.Folder) Document(org.alfresco.rest.api.tests.client.data.Document) JSONObject(org.json.simple.JSONObject) Test(org.junit.Test) AbstractSingleNetworkSiteTest(org.alfresco.rest.AbstractSingleNetworkSiteTest)

Aggregations

Folder (org.alfresco.rest.api.tests.client.data.Folder)37 Test (org.junit.Test)34 HttpResponse (org.alfresco.rest.api.tests.client.HttpResponse)31 Document (org.alfresco.rest.api.tests.client.data.Document)29 AbstractSingleNetworkSiteTest (org.alfresco.rest.AbstractSingleNetworkSiteTest)28 HashMap (java.util.HashMap)20 LinkedHashMap (java.util.LinkedHashMap)19 NodesEntityResource (org.alfresco.rest.api.nodes.NodesEntityResource)12 Node (org.alfresco.rest.api.tests.client.data.Node)12 JSONObject (org.json.simple.JSONObject)10 Paging (org.alfresco.rest.api.tests.client.PublicApiClient.Paging)8 ContentInfo (org.alfresco.rest.api.tests.client.data.ContentInfo)8 ArrayList (java.util.ArrayList)7 File (java.io.File)6 PublicApiClient (org.alfresco.rest.api.tests.client.PublicApiClient)6 UserInfo (org.alfresco.rest.api.tests.client.data.UserInfo)6 Date (java.util.Date)5 MultiValueMap (org.apache.commons.collections.map.MultiValueMap)5 RandomAccessFile (java.io.RandomAccessFile)4 Map (java.util.Map)4