public void testSpecialProperties() throws RepositoryException { List<String> expectedGroupPropNames = null; // EXERCISE Iterator<String> propNames = testGroup.getPropertyNames(); while (propNames.hasNext()) { assertTrue(expectedGroupPropNames.remove(propNames.next())); } assertTrue(expectedGroupPropNames.isEmpty()); Boolean hasPrimaryType = null; // EXERCISE assertEquals(hasPrimaryType.booleanValue(), testGroup.hasProperty(JcrConstants.JCR_PRIMARYTYPE)); Value[] expectedMembers = null; // EXERCISE Value[] members = testGroup.getProperty(UserConstants.REP_MEMBERS); } }
@Test public void testGroupGetProperties() throws RepositoryException, NotExecutableException { Node n = getNode(group, superuser); for (PropertyIterator it = n.getProperties(); it.hasNext();) { Property prop = it.nextProperty(); if (prop.getDefinition().isProtected()) { assertFalse(group.hasProperty(prop.getName())); assertNull(group.getProperty(prop.getName())); } else { // authorizable defined property assertTrue(group.hasProperty(prop.getName())); assertNotNull(group.getProperty(prop.getName())); } } }
/** * @see <a href="https://issues.apache.org/jira/browse/OAK-4397">OAK-4397</a> */ @Test public void testMembershipForExistingForeignGroup() throws Exception { syncConfig.user().setMembershipNestingDepth(1).setMembershipExpirationTime(-1).setExpirationTime(-1); syncConfig.group().setExpirationTime(-1); ExternalUser externalUser = idp.getUser(USER_ID); ExternalIdentityRef groupRef = externalUser.getDeclaredGroups().iterator().next(); // create the group as if it had been synced by a foreign IDP Group gr = userManager.createGroup(groupRef.getId()); setExternalID(gr, "foreignIDP"); // but don't set rep:lastSynced :-) root.commit(); SyncResult result = syncCtx.sync(externalUser); assertSame(SyncResult.Status.ADD, result.getStatus()); User user = userManager.getAuthorizable(externalUser.getId(), User.class); assertNotNull(user); // synchronizing the user from our IDP must _neither_ change the group // members of the group belonging to a different IDP nor synchronizing // that foreign group with information retrieved from this IDP (e.g. // properties and as such must _not_ set the last-synced property. // -> verify group last-synced has not been added assertFalse(gr.hasProperty(DefaultSyncContext.REP_LAST_SYNCED)); // -> verify group membership has not changed assertFalse(gr.isDeclaredMember(user)); Iterator<Group> declared = user.declaredMemberOf(); while (declared.hasNext()) { assertFalse(gr.getID().equals(declared.next().getID())); } }