private boolean isMyIDP(@NotNull SyncedIdentity id) { ExternalIdentityRef ref = id.getExternalIdRef(); String providerName = (ref == null) ? null : ref.getProviderName(); return providerName != null && (providerName.isEmpty() || providerName.equals(idp.getName())); }
private static void append(@NotNull List<String> list, @Nullable SyncedIdentity syncedIdentity, @NotNull String op, @Nullable String msg) { String uid = JsonUtil.getJsonString((syncedIdentity == null ? null : syncedIdentity.getId())); ExternalIdentityRef externalIdentityRef = (syncedIdentity == null) ? null : syncedIdentity.getExternalIdRef(); String eid = (externalIdentityRef == null) ? "\"\"" : JsonUtil.getJsonString(externalIdentityRef.getString()); if (msg == null) { list.add(String.format("{op:\"%s\",uid:%s,eid:%s}", op, uid, eid)); } else { list.add(String.format("{op:\"%s\",uid:%s,eid:%s,msg:%s}", op, uid, eid, JsonUtil.getJsonString(msg))); } }
@Test public void testGetExternalIdRef() { assertEquals(externalUser.getExternalId(), si.getExternalIdRef()); assertEquals(externalGroup.getExternalId(), siGroup.getExternalIdRef()); SyncedIdentity siNullExtRef = new DefaultSyncedIdentity(TestIdentityProvider.ID_TEST_USER, null, false, 234); assertNull(siNullExtRef.getExternalIdRef()); }
@Test public void testListIdentitiesIgnoresLocal() throws Exception { sync(USER_ID, false); Iterator<SyncedIdentity> identities = syncHandler.listIdentities(userManager); while (identities.hasNext()) { SyncedIdentity si = identities.next(); ExternalIdentityRef ref = si.getExternalIdRef(); assertNotNull(ref); assertNotNull(ref.getProviderName()); } } }
@Test public void testFindLocalIdentity() throws Exception { SyncedIdentity id = syncHandler.findIdentity(userManager, "admin"); assertNotNull("known authorizable should exist", id); assertNull("local user should not have external ref", id.getExternalIdRef()); }
@Test public void testFindExternalIdentity() throws Exception { login(new SimpleCredentials(USER_ID, new char[0])).close(); root.refresh(); SyncedIdentity id = syncHandler.findIdentity(userManager, USER_ID); assertNotNull("known authorizable should exist", id); ExternalIdentityRef ref = id.getExternalIdRef(); assertNotNull(ref); assertEquals("external user should have correct external ref.idp", idp.getName(), ref.getProviderName()); assertEquals("external user should have correct external ref.id", USER_ID, id.getExternalIdRef().getId()); }
private void sync(@NotNull String id, boolean isGroup) throws Exception { ctx = sh.createContext(idp, userManager, valueFactory); ExternalIdentity exIdentity = (isGroup) ? idp.getGroup(id) : idp.getUser(id); assertNotNull(exIdentity); SyncResult res = ctx.sync(exIdentity); assertEquals(idp.getName(), res.getIdentity().getExternalIdRef().getProviderName()); assertSame(SyncResult.Status.ADD, res.getStatus()); r.commit(); }
@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 testFindGroupIdentity() throws Exception { SyncedIdentity si = syncHandler.findIdentity(userManager, "c"); assertNull(si); sync("c", true); si = syncHandler.findIdentity(userManager, "c"); assertNotNull(si); assertTrue(si.isGroup()); assertNotNull(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 testCreateSyncedIdentitySyncedGroup() throws Exception { ExternalIdentity externalGroup = idp.listGroups().next(); sync(externalGroup); Authorizable a = userManager.getAuthorizable(externalGroup.getId()); SyncedIdentity si = DefaultSyncContext.createSyncedIdentity(a); assertNotNull(si); assertEquals(a.getID(), si.getId()); assertNotNull(si.getExternalIdRef()); assertTrue(si.isGroup()); assertEquals(syncCtx.now, si.lastSynced()); }
@Test public void testCreateSyncedIdentitySyncedUser() throws Exception { ExternalIdentity externalUser = idp.listUsers().next(); sync(externalUser); Authorizable a = userManager.getAuthorizable(externalUser.getId()); SyncedIdentity si = DefaultSyncContext.createSyncedIdentity(a); assertNotNull(si); assertEquals(a.getID(), si.getId()); assertNotNull(si.getExternalIdRef()); assertFalse(si.isGroup()); assertEquals(syncCtx.now, si.lastSynced()); }
@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 testCreateSyncedIdentityLocalUser() throws Exception { User u = getTestUser(); SyncedIdentity si = DefaultSyncContext.createSyncedIdentity(u); assertNotNull(si); assertEquals(u.getID(), si.getId()); assertNull(si.getExternalIdRef()); assertFalse(si.isGroup()); assertEquals(-1, si.lastSynced()); }
@Test public void testCreateSyncedIdentityLocalGroup() throws Exception { Group gr = createTestGroup(); SyncedIdentity si = DefaultSyncContext.createSyncedIdentity(gr); assertNotNull(si); assertEquals(gr.getID(), si.getId()); assertNull(si.getExternalIdRef()); assertTrue(si.isGroup()); assertEquals(-1, si.lastSynced()); }
@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 testFindIdentityWithRemovedExternalId() throws Exception { sync(USER_ID, false); // NOTE: use system-root to remove the protected rep:externalId property (since Oak 1.5.8) Authorizable authorizable = userManager.getAuthorizable(USER_ID); Root systemRoot = getSystemRoot(); systemRoot.getTree(authorizable.getPath()).removeProperty(DefaultSyncContext.REP_EXTERNAL_ID); systemRoot.commit(); root.refresh(); SyncedIdentity si = syncHandler.findIdentity(userManager, USER_ID); assertNotNull(si); assertNull(si.getExternalIdRef()); }