diff --git a/source/java/org/alfresco/rest/api/impl/GroupsImpl.java b/source/java/org/alfresco/rest/api/impl/GroupsImpl.java index 7d3c5fcace..bec89c6ae5 100644 --- a/source/java/org/alfresco/rest/api/impl/GroupsImpl.java +++ b/source/java/org/alfresco/rest/api/impl/GroupsImpl.java @@ -701,6 +701,11 @@ public class GroupsImpl implements Groups throw new InvalidArgumentException("groupId is null or empty"); } + if (group.getId().indexOf('/') != -1) + { + throw new IllegalArgumentException("groupId contains characters that are not permitted."); + } + if (groupAuthorityExists(group.getId())) { throw new ConstraintViolatedException("Group '" + group.getId() + "' already exists."); diff --git a/source/test-java/org/alfresco/rest/api/tests/GroupsTest.java b/source/test-java/org/alfresco/rest/api/tests/GroupsTest.java index f4f5e96299..612f1645ce 100644 --- a/source/test-java/org/alfresco/rest/api/tests/GroupsTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/GroupsTest.java @@ -881,6 +881,15 @@ public class GroupsTest extends AbstractSingleNetworkSiteTest groupsProxy.createGroup(group, null, HttpServletResponse.SC_BAD_REQUEST); } + // Create group with an id that contains "/" should return an error. + { + setRequestContext(networkOne.getId(), networkAdmin, DEFAULT_ADMIN_PWD); + + Group group = new Group(); + group.setId("/test/"); + groupsProxy.createGroup(group, null, HttpServletResponse.SC_BAD_REQUEST); + } + // Id clashes with an existing group. { setRequestContext(networkOne.getId(), networkAdmin, DEFAULT_ADMIN_PWD);