@Test(expected = IllegalArgumentException.class) public void testSyncInvalidExternalIdentity() throws Exception { syncCtx.sync(new TestIdentityProvider.TestIdentity()); }
@Test public void syncExternalGroup() throws Exception { SyncResult res = syncCtx.sync(idp.listGroups().next()); assertRepExternalId(res); }
/** * Test utility method to synchronize the given identity into the repository. * This is intended to simplify those tests that require a given user/group * to be synchronized before executing the test. * * @param externalIdentity The external identity to be synchronized. * @throws Exception */ private void sync(@NotNull ExternalIdentity externalIdentity) throws Exception { SyncResult result = syncCtx.sync(externalIdentity); assertSame(SyncResult.Status.ADD, result.getStatus()); root.commit(); }
@Test public void testSyncUserById() throws Exception { ExternalIdentity externalId = idp.listUsers().next(); // no initial sync -> sync-by-id doesn't succeed SyncResult result = syncCtx.sync(externalId.getId()); assertEquals(SyncResult.Status.NO_SUCH_AUTHORIZABLE, result.getStatus()); // force sync syncCtx.sync(externalId); // try again syncCtx.setForceUserSync(true); result = syncCtx.sync(externalId.getId()); assertEquals(SyncResult.Status.UPDATE, result.getStatus()); }
@Test public void testSyncGroupById() throws Exception { ExternalIdentity externalId = idp.listGroups().next(); // no initial sync -> sync-by-id doesn't succeed SyncResult result = syncCtx.sync(externalId.getId()); assertEquals(SyncResult.Status.NO_SUCH_AUTHORIZABLE, result.getStatus()); // force sync syncCtx.sync(externalId); // try again syncCtx.setForceGroupSync(true); result = syncCtx.sync(externalId.getId()); assertEquals(SyncResult.Status.UPDATE, result.getStatus()); }
@Test public void testSyncExternalGroup() throws Exception { ExternalGroup gr = idp.listGroups().next(); assertNotNull(gr); SyncResult result = syncCtx.sync(gr); assertEquals(SyncResult.Status.ADD, result.getStatus()); result = syncCtx.sync(gr); assertEquals(SyncResult.Status.NOP, result.getStatus()); syncCtx.setForceGroupSync(true); result = syncCtx.sync(gr); assertEquals(SyncResult.Status.UPDATE, result.getStatus()); }
@Test public void syncExternalUser() throws Exception { SyncResult res = syncCtx.sync(idp.getUser(USER_ID)); assertRepExternalId(res); }
@Test public void testSyncExternalUser() throws Exception { ExternalUser user = idp.listUsers().next(); assertNotNull(user); SyncResult result = syncCtx.sync(user); assertEquals(SyncResult.Status.ADD, result.getStatus()); result = syncCtx.sync(user); assertEquals(SyncResult.Status.NOP, result.getStatus()); syncCtx.setForceUserSync(true); result = syncCtx.sync(user); assertEquals(SyncResult.Status.UPDATE, result.getStatus()); }
@Test(expected = SyncException.class) public void testSyncByIdUsingExceptionId() throws Exception { Group gr = userManager.createGroup(TestIdentityProvider.ID_EXCEPTION); setExternalID(gr, idp.getName()); syncCtx.sync(TestIdentityProvider.ID_EXCEPTION); }
@Test public void testSyncAutoMembershipListsNonExistingGroup() throws Exception { syncConfig.user().setAutoMembership("nonExistingGroup"); SyncResult result = syncCtx.sync(idp.listUsers().next()); assertEquals(SyncResult.Status.ADD, result.getStatus()); }
@Test public void testSyncAutoMembershipListsUser() throws Exception { // set auto-membership config to point to a user instead a group syncConfig.user().setAutoMembership(getTestUser().getID()); syncCtx.sync(idp.listUsers().next()); }
@Test public void testSyncExternalToForeignLocalGroup() throws Exception { ExternalGroup external = idp.listGroups().next(); syncCtx.sync(external); Group gr = userManager.getAuthorizable(external.getId(), Group.class); setExternalID(gr, "differentIDP"); SyncResult result = syncCtx.sync(external); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertEquals(external.getExternalId(), si.getExternalIdRef()); }
@Test public void testSyncExternalForeignLocalUser() throws Exception { ExternalUser external = idp.listUsers().next(); syncCtx.sync(external); User u = userManager.getAuthorizable(external.getId(), User.class); setExternalID(u, "differentIDP"); SyncResult result = syncCtx.sync(external); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertEquals(external.getExternalId(), si.getExternalIdRef()); }
@Test public void testSyncExternalToExistingLocalGroup() throws Exception { ExternalGroup external = idp.listGroups().next(); syncCtx.sync(external); Group gr = userManager.getAuthorizable(external.getId(), Group.class); gr.removeProperty(ExternalIdentityConstants.REP_EXTERNAL_ID); SyncResult result = syncCtx.sync(external); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertEquals(external.getExternalId(), si.getExternalIdRef()); }
@Test public void testSyncExternalToExistingLocalUser() throws Exception { ExternalUser external = idp.listUsers().next(); syncCtx.sync(external); User u = userManager.getAuthorizable(external.getId(), User.class); u.removeProperty(ExternalIdentityConstants.REP_EXTERNAL_ID); SyncResult result = syncCtx.sync(external); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertEquals(external.getExternalId(), si.getExternalIdRef()); }
@Test public void testSyncAutoMembership() throws Exception { Group gr = createTestGroup(); syncConfig.user().setAutoMembership(gr.getID()); SyncResult result = syncCtx.sync(idp.listUsers().next()); assertEquals(SyncResult.Status.ADD, result.getStatus()); Authorizable a = userManager.getAuthorizable(result.getIdentity().getId()); assertTrue(gr.isDeclaredMember(a)); }
@Test public void testSyncByForeignUserId() throws Exception { SyncResult result = syncCtx.sync(getTestUser().getID()); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertNull(si.getExternalIdRef()); assertFalse(si.isGroup()); }
@Test public void testSyncByForeignGroupId() throws Exception { SyncResult result = syncCtx.sync(createTestGroup().getID()); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertNull(si.getExternalIdRef()); assertTrue(si.isGroup()); }
@Test public void testSyncByForeignId2() throws Exception { User u = userManager.getAuthorizable(getTestUser().getID(), User.class); setExternalID(u, "differentIDP"); SyncResult result = syncCtx.sync(u.getID()); assertEquals(SyncResult.Status.FOREIGN, result.getStatus()); SyncedIdentity si = result.getIdentity(); assertNotNull(si); assertEquals(DefaultSyncContext.getIdentityRef(u), si.getExternalIdRef()); }
@Test public void testSyncExternalUserExistingGroups() throws Exception { syncConfig.user().setMembershipNestingDepth(1); ExternalUser externalUser = idp.getUser(USER_ID); DefaultSyncContext ctx = new DefaultSyncContext(syncConfig, idp, userManager, valueFactory); ctx.sync(externalUser); ctx.close(); Authorizable a = userManager.getAuthorizable(USER_ID); assertSyncedMembership(userManager, a, externalUser); syncContext.setForceUserSync(true); syncConfig.user().setMembershipExpirationTime(-1); syncContext.sync(externalUser); Tree t = r.getTree(a.getPath()); assertFalse(t.hasProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES)); assertSyncedMembership(userManager, a, externalUser); }