From 04c6028147a17b5a508207dc78038d1ca4bc209e Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Mon, 30 Jan 2017 10:02:38 +0000 Subject: [PATCH] Merged mward/repo-1600-zonesfilter (5.2.1) to 5.2.N (5.2.1) 134762 mward: REPO-1583: added include=parentIds support git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@134808 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/rest/api/impl/GroupsImpl.java | 9 +++++- .../alfresco/rest/api/tests/GroupsTest.java | 32 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/rest/api/impl/GroupsImpl.java b/source/java/org/alfresco/rest/api/impl/GroupsImpl.java index aab90a5e63..90ad9d8e6a 100644 --- a/source/java/org/alfresco/rest/api/impl/GroupsImpl.java +++ b/source/java/org/alfresco/rest/api/impl/GroupsImpl.java @@ -541,7 +541,14 @@ public class GroupsImpl implements Groups { if (includeParam.contains(PARAM_INCLUDE_PARENT_IDS)) { - Set containingAuthorities = authorityService.getContainingAuthorities(AuthorityType.GROUP, authorityInfo.getAuthorityName(), true); + String authority = authorityInfo.getAuthorityName(); + Set containingAuthorities = Collections.emptySet(); + // Workaround for AuthorityDAO.listAuthorities, where although AuthorityType.GUEST + // is a special case, AuthorityType.EVERYONE is not, and an exception is thrown. + if (!authority.equalsIgnoreCase(PermissionService.ALL_AUTHORITIES)) + { + containingAuthorities = authorityService.getContainingAuthorities(AuthorityType.GROUP, authority, true); + } group.setParentIds(containingAuthorities); } 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 fa9d8c564b..e28f9b5ee9 100644 --- a/source/test-java/org/alfresco/rest/api/tests/GroupsTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/GroupsTest.java @@ -39,6 +39,7 @@ import org.alfresco.rest.api.tests.client.data.Person; import org.alfresco.rest.framework.resource.parameters.SortColumn; import org.alfresco.service.cmr.security.AuthorityService; import org.alfresco.service.cmr.security.AuthorityType; +import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.util.GUID; import org.junit.After; import org.junit.Before; @@ -884,6 +885,37 @@ public class GroupsTest extends AbstractSingleNetworkSiteTest getGroupsByPersonId(personAlice.getId(), paging, otherParams, HttpServletResponse.SC_BAD_REQUEST); } + // Check include parent ids. + { + Paging paging = getPaging(0, Integer.MAX_VALUE); + Map otherParams = new HashMap<>(); + otherParams.put("include", org.alfresco.rest.api.Groups.PARAM_INCLUDE_PARENT_IDS); + + ListResponse resp = getGroupsByPersonId(personAlice.getId(), paging, otherParams); + + assertEquals(4, resp.getList().size()); + + Iterator it = resp.getList().iterator(); + + Group group = it.next(); + assertEquals(PermissionService.ALL_AUTHORITIES, group.getId()); + assertEquals(0, group.getParentIds().size()); + + group = it.next(); + assertEquals(rootGroup.getId(), group.getId()); + assertEquals(0, group.getParentIds().size()); + + group = it.next(); + assertEquals(groupA.getId(), group.getId()); + assertEquals(1, group.getParentIds().size()); + assertTrue(group.getParentIds().contains(rootGroup.getId())); + + group = it.next(); + assertEquals(groupB.getId(), group.getId()); + assertEquals(1, group.getParentIds().size()); + assertTrue(group.getParentIds().contains(rootGroup.getId())); + } + // Filter by zone, use the -me- alias. { Map params = new HashMap<>();