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;