diff --git a/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java b/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java index 18804aa336..57c7158b23 100644 --- a/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/AbstractBaseApiTest.java @@ -83,6 +83,11 @@ public abstract class AbstractBaseApiTest extends EnterpriseTestApi protected static final String TYPE_CM_CONTENT = "cm:content"; protected static final String TYPE_CM_OBJECT = "cm:cmobject"; + protected static final String ASPECT_CM_PREFERENCES = "cm:preferences"; + protected static final String ASSOC_TYPE_CM_PREFERENCE_IMAGE = "cm:preferenceImage"; + + protected static final String ASSOC_TYPE_CM_CONTAINS = "cm:contains"; + /** * The api scope. either public or private 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 007c12c21f..77cbf16464 100644 --- a/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/NodeApiTest.java @@ -55,6 +55,7 @@ import org.alfresco.rest.api.tests.client.PublicApiClient.ExpectedPaging; import org.alfresco.rest.api.tests.client.PublicApiClient.Paging; import org.alfresco.rest.api.tests.client.PublicApiHttpClient.BinaryPayload; import org.alfresco.rest.api.tests.client.RequestContext; +import org.alfresco.rest.api.tests.client.data.Association; import org.alfresco.rest.api.tests.client.data.ContentInfo; import org.alfresco.rest.api.tests.client.data.Document; import org.alfresco.rest.api.tests.client.data.Folder; @@ -1789,6 +1790,86 @@ public class NodeApiTest extends AbstractBaseApiTest post(getNodeChildrenUrl(myNodeId), user1, RestApiUtil.toJsonAsStringNonNull(n), 409); } + /** + * Tests creation and listing of children using assoc type other than "cm:contains". + * + *

POST:

+ * {@literal :/alfresco/api/-default-/public/alfresco/versions/1/nodes//children} + * + *

GET:

+ * {@literal :/alfresco/api/-default-/public/alfresco/versions/1/nodes//children} + */ + @Test + public void testChildrenAssocType() throws Exception + { + String myNodeId = getMyNodeId(user1); + + String fId = null; + + try + { + fId = createFolder(user1, myNodeId, "testChildrenAssocType folder").getId(); + + Node nodeUpdate = new Node(); + nodeUpdate.setAspectNames(Collections.singletonList(ASPECT_CM_PREFERENCES)); + + put(URL_NODES, user1, fId, toJsonAsStringNonNull(nodeUpdate), null, 200); + + HttpResponse response = getAll(getNodeChildrenUrl(fId), user1, null, null, 200); + List nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class); + assertEquals(0, nodes.size()); + + Node obj = new Node(); + obj.setName("c1"); + obj.setNodeType(TYPE_CM_CONTENT); + + response = post(getNodeChildrenUrl(fId), user1, toJsonAsStringNonNull(obj), 201); + Node nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class); + String c1Id = nodeResp.getId(); + + obj = new Node(); + obj.setName("c2"); + obj.setNodeType(TYPE_CM_CONTENT); + Association assoc = new Association(); + assoc.setAssocType(ASSOC_TYPE_CM_PREFERENCE_IMAGE); + obj.setAssociation(assoc); + + response = post(getNodeChildrenUrl(fId), user1, toJsonAsStringNonNull(obj), 201); + nodeResp = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class); + String c2Id = nodeResp.getId(); + + response = getAll(getNodeChildrenUrl(fId), user1, null, null, 200); + nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class); + assertEquals(2, nodes.size()); + + Map params = new HashMap<>(); + params.put("where", "(assocType='"+ASSOC_TYPE_CM_CONTAINS+"')"); + params.put("include", "association"); + response = getAll(getNodeChildrenUrl(fId), user1, null, params, 200); + nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class); + assertEquals(1, nodes.size()); + assertEquals(c1Id, nodes.get(0).getId()); + assertTrue(nodes.get(0).getAssociation().getIsPrimary()); + + params = new HashMap<>(); + params.put("where", "(assocType='"+ASSOC_TYPE_CM_PREFERENCE_IMAGE+"')"); + params.put("include", "association"); + response = getAll(getNodeChildrenUrl(fId), user1, null, params, 200); + nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class); + assertEquals(1, nodes.size()); + assertEquals(c2Id, nodes.get(0).getId()); + assertTrue(nodes.get(0).getAssociation().getIsPrimary()); + } + finally + { + // some cleanup + if (fId != null) + { + delete(URL_NODES, user1, fId, 204); + } + } + } + // TODO test custom types with properties (sub-type of cm:cmobject) @Test diff --git a/source/test-java/org/alfresco/rest/api/tests/NodeAssociationsApiTest.java b/source/test-java/org/alfresco/rest/api/tests/NodeAssociationsApiTest.java index 44cbb92365..aa1e3e4510 100644 --- a/source/test-java/org/alfresco/rest/api/tests/NodeAssociationsApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/NodeAssociationsApiTest.java @@ -94,10 +94,6 @@ public class NodeAssociationsApiTest extends AbstractBaseApiTest private static final String URL_SECONDARY_CHILDREN = "secondary-children"; private static final String URL_PARENTS = "parents"; - private static final String ASSOC_TYPE_CM_CONTAINS = "cm:contains"; - - private static final String ASPECT_CM_PREFERENCES = "cm:preferences"; - private static final String ASSOC_TYPE_CM_PREFERENCE_IMAGE = "cm:preferenceImage"; private String user1;