@Override protected void createDeepTree() throws Exception { super.createDeepTree(); UserManager userManager = ((JackrabbitSession) adminSession).getUserManager(); User user = userManager.createUser(userId, userId); for (int i = 0; i < membershipSize; i++) { Group g = userManager.createGroup("group" + i); g.addMember(user); setupACEs(g.getPrincipal()); } adminSession.save(); }
@Test public void testTwice() throws Exception { Set<String> failed = testGroup.removeMembers(memberGroup.getID(), memberGroup.getID()); assertTrue(failed.isEmpty()); assertFalse(testGroup.isDeclaredMember(memberGroup)); }
/** * @see AuthorizableAction#onRemove(org.apache.jackrabbit.api.security.user.Authorizable, javax.jcr.Session) */ @Override public void onRemove(Authorizable authorizable, Session session) throws RepositoryException { Iterator<Group> membership = authorizable.declaredMemberOf(); while (membership.hasNext()) { membership.next().removeMember(authorizable); } } }
GroupPredicate(UserManager userManager, String groupId, boolean declaredMembersOnly) throws RepositoryException { Authorizable authorizable = userManager.getAuthorizable(groupId); Group group = (authorizable == null || !authorizable.isGroup()) ? null : (Group) authorizable; if (group != null) { membersIterator = (declaredMembersOnly) ? group.getDeclaredMembers() : group.getMembers(); } else { membersIterator = Collections.emptyIterator(); } }
private Iterator<Authorizable> getGroupMembers(final ActionResult actionResult, final Group group) throws RepositoryException { String id = group.getID(); actionResult.setAuthorizable(id); Iterator<Authorizable> groupMembers = group.getDeclaredMembers(); if (!groupMembers.hasNext()) { actionResult.logWarning(MessagingUtils.groupHasNoMembers(id)); } return groupMembers; } }
public void testCreateGroup() throws RepositoryException, NotExecutableException { Principal p = getTestPrincipal(); Group gr = createGroup(p); createdGroups.add(gr); assertNotNull(gr.getID()); assertEquals(p.getName(), gr.getPrincipal().getName()); assertFalse("A new group must not have members.",gr.getMembers().hasNext()); }
public void testAddOtherUserToGroup() throws RepositoryException, NotExecutableException { UserManager umgr = getUserManager(uSession); Authorizable pU = umgr.getAuthorizable(otherUID); Group gr = (Group) umgr.getAuthorizable(groupAdmin.getID()); try { assertTrue(gr.addMember(pU)); save(uSession); } finally { gr.removeMember(pU); save(uSession); } }
@Test public void testAlreadyMember() throws Exception { testGroup.addMember(getTestUser()); testGroup.addMember(memberGroup); Set<String> failed = testGroup.addMembers(getTestUser().getID(), memberGroup.getID()); assertEquals(2, failed.size()); }
@Override public boolean addMember(Authorizable authorizable) throws RepositoryException { try { if (isValid(authorizable)) { return getDelegate().addMember(((AuthorizableImpl) authorizable).getDlg()); } else { return false; } } finally { getMgr().autosave(); } }
@Test public void testTwice() throws Exception { Set<String> failed = testGroup.addMembers(memberGroup.getID(), memberGroup.getID()); assertTrue(failed.isEmpty()); assertTrue(testGroup.isDeclaredMember(memberGroup)); Iterable<String> memberIds = getMemberIds(testGroup); assertEquals(1, Iterables.size(memberIds)); }
@Test public void testAutoMembership() throws Exception { Group gr = userManager.createGroup("group" + UUID.randomUUID()); r.commit(); syncConfig.user().setAutoMembership(gr.getID(), "non-existing-group"); SyncResult result = syncContext.sync(idp.getUser(USER_ID)); assertSame(SyncResult.Status.ADD, result.getStatus()); User u = userManager.getAuthorizable(USER_ID, User.class); assertFalse(gr.isDeclaredMember(u)); assertFalse(gr.isMember(u)); }
@Test public void testApplyMembership() throws Exception { User u = getTestUser(); Group gr = createTestGroup(); syncCtx.applyMembership(u, ImmutableSet.of(gr.getID())); assertTrue(gr.isDeclaredMember(u)); assertTrue(root.hasPendingChanges()); }
public void testGroupNode() throws RepositoryException { Node node = getAuthorizableNode(testGroup); String idPropertyName = null; // EXERCISE assertEquals(testGroup.getID(), node.getProperty(idPropertyName).getString()); String principalPropertyName = null; // EXERCISE assertEquals(testGroup.getPrincipal().getName(), node.getProperty(principalPropertyName).getString()); String expectedNodeTypeName = null; // EXERCISE assertEquals(expectedNodeTypeName, node.getPrimaryNodeType().getName()); }
public boolean evaluate(Authorizable authorizable) { try { return authorizable != null && group.isMember(authorizable); } catch (RepositoryException e) { log.warn("Cannot determine whether {} is member of group {}", authorizable, group); log.debug(e.getMessage(), e); return false; } } };
@Test public void testMemberRemoved() throws Exception { testUser01 = getUserManager(root).createUser(TEST_USER_PREFIX + "01", ""); testGroup.addMember(testUser01); root.commit(); testGroup.removeMember(testUser01); assertTrue(groupAction.onMemberRemovedCalled); assertEquals(testGroup, groupAction.group); assertEquals(testUser01, groupAction.member); }
@NotNull List<String> createMembers(@NotNull Group g, int cnt) throws Exception { List<String> memberPaths = new ArrayList(); for (int i = 0; i <= cnt; i++) { User u = createUser(); Group gr = createGroup(); g.addMembers(u.getID(), gr.getID()); memberPaths.add(u.getPath()); memberPaths.add(gr.getPath()); } return memberPaths; }
@Test public void testOnRemoveUserWithMembership() throws Exception { User u = getTestUser(); gr.addMember(u); root.commit(); action.onRemove(u, root, NamePathMapper.DEFAULT); assertTrue(root.hasPendingChanges()); assertFalse(gr.isDeclaredMember(u)); } }
public void testRemoveMembershipForOwnAuthorizable() throws RepositoryException, NotExecutableException { UserManager umgr = getUserManager(uSession); Authorizable user = umgr.getAuthorizable(uID); Group gr = (Group) umgr.getAuthorizable(groupAdmin.getID()); // removing himself from group. should succeed. assertTrue(gr.removeMember(user)); }
private static void assertNotDeclaredMember(Group gr, String potentialID) throws RepositoryException { // declared members must not list the invalid entry. Iterator<Authorizable> it = gr.getDeclaredMembers(); while (it.hasNext()) { AuthorizableImpl member = (AuthorizableImpl) it.next(); assertFalse(potentialID.equals(member.getNode().getIdentifier())); } }