@Test public void testIsSameIDPNull() throws Exception { assertFalse(syncCtx.isSameIDP((Authorizable) null)); }
@NotNull protected DefaultSyncResultImpl syncGroup(@NotNull ExternalGroup external, @NotNull Group group) throws RepositoryException { // make also sure the local user to be synced belongs to the same IDP. Note: 'external' has been verified before. if (!isSameIDP(group)) { return new DefaultSyncResultImpl(new DefaultSyncedIdentity(external.getId(), external.getExternalId(), false, -1), SyncResult.Status.FOREIGN); } SyncResult.Status status; // first check if group is expired if (!forceGroupSync && !isExpired(group)) { status = SyncResult.Status.NOP; } else { syncExternalIdentity(external, group, config.group()); // finally "touch" the sync property group.setProperty(REP_LAST_SYNCED, nowValue); status = SyncResult.Status.UPDATE; } return new DefaultSyncResultImpl(createSyncedIdentity(group), status); }
@Test public void testIsSameIDPExternalIdentityRef() throws Exception { assertFalse(syncCtx.isSameIDP(new TestIdentityProvider.ForeignExternalUser().getExternalId())); assertFalse(syncCtx.isSameIDP(new TestIdentityProvider.ForeignExternalGroup().getExternalId())); assertTrue(syncCtx.isSameIDP(new TestIdentityProvider.TestIdentity().getExternalId())); assertTrue(syncCtx.isSameIDP(idp.listGroups().next().getExternalId())); assertTrue(syncCtx.isSameIDP(idp.listUsers().next().getExternalId())); }
@Test public void testIsSameIDPLocalUser() throws Exception { assertFalse(syncCtx.isSameIDP(getTestUser())); }
@Test public void testIsSameIDPLocalGroup() throws Exception { assertFalse(syncCtx.isSameIDP(createTestGroup())); }
@Test public void testIsSameIDPForeign() throws Exception { Group gr = createTestGroup(); setExternalID(gr, "some_other_idp"); assertFalse(syncCtx.isSameIDP(gr)); }
@Test public void testIsSameIDPSyncedGroup() throws Exception { ExternalIdentity externalGroup = idp.listGroups().next(); sync(externalGroup); assertTrue(syncCtx.isSameIDP(userManager.getAuthorizable(externalGroup.getId()))); }
@Test public void testIsSameIDPSyncedUser() throws Exception { ExternalIdentity externalUser = idp.listUsers().next(); sync(externalUser); assertTrue(syncCtx.isSameIDP(userManager.getAuthorizable(externalUser.getId()))); }
@Test public void testIsSameIDPMissingExternalId() throws Exception { ExternalIdentity externalUser = idp.listUsers().next(); sync(externalUser); Authorizable a = userManager.getAuthorizable(externalUser.getId()); a.removeProperty(DefaultSyncContext.REP_EXTERNAL_ID); assertFalse(syncCtx.isSameIDP(a)); }
public SyncResult sync(@NotNull ExternalIdentity identity) throws SyncException { ExternalIdentityRef ref = identity.getExternalId(); if (!isSameIDP(ref)) {
@NotNull protected DefaultSyncResultImpl syncUser(@NotNull ExternalUser external, @NotNull User user) throws RepositoryException { // make also sure the local user to be synced belongs to the same IDP. Note: 'external' has been verified before. if (!isSameIDP(user)) { return new DefaultSyncResultImpl(new DefaultSyncedIdentity(external.getId(), external.getExternalId(), false, -1), SyncResult.Status.FOREIGN); } SyncResult.Status status; // check if user is expired if (!forceUserSync && !isExpired(user)) { status = SyncResult.Status.NOP; } else { syncExternalIdentity(external, user, config.user()); if (isExpired(user, config.user().getMembershipExpirationTime(), "Membership")) { // synchronize external memberships syncMembership(external, user, config.user().getMembershipNestingDepth()); } if (this.config.user().getDisableMissing() && user.isDisabled()) { status = SyncResult.Status.ENABLE; user.disable(null); } else { status = SyncResult.Status.UPDATE; } // finally "touch" the sync property user.setProperty(REP_LAST_SYNCED, nowValue); } return new DefaultSyncResultImpl(createSyncedIdentity(user), status); }
if (ref == null || !isSameIDP(ref)) { return new DefaultSyncResultImpl(new DefaultSyncedIdentity(id, ref, auth.isGroup(), -1), SyncResult.Status.FOREIGN);