@NotNull @Override public String getPrincipalName() { return "p_" + getExternalId().getString(); }
@NotNull @Override public String getPrincipalName() { return "p_" + getExternalId().getString(); }
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))); } }
@NotNull @Override public String fromExternalIdentityRef(@NotNull ExternalIdentityRef externalIdentityRef) throws ExternalIdentityException { if (!isMyRef(externalIdentityRef)) { throw new ExternalIdentityException("Foreign IDP " + externalIdentityRef.getString()); } return externalIdentityRef.getId(); }
@Override protected void runTest() throws Exception { String[] externalIds = new String[batchSize]; for (int i = 0; i < batchSize; i++) { externalIds[i] = new ExternalIdentityRef(getRandomUserId(), idp.getName()).getString(); } bean.syncExternalUsers(externalIds); } }
@Override protected void runTest() throws Exception { bean.syncExternalUsers(new String[]{new ExternalIdentityRef(getRandomUserId(), idp.getName()).getString()}); } }
/** * @see <a href="https://issues.apache.org/jira/browse/OAK-4346">OAK-4346</a> */ @Test public void testSyncExternalForeign() { ExternalIdentityRef ref = new ExternalIdentityRef(TestIdentityProvider.ID_TEST_USER, "anotherIDP"); String[] result = syncMBean.syncExternalUsers(new String[]{ref.getString()}); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for"); result = syncMBean.syncExternalUsers(new String[] {ref.getString()}); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for"); }
/** * @see <a href="https://issues.apache.org/jira/browse/OAK-4346">OAK-4346</a> */ @Test public void testSyncExternalLocal() { ExternalIdentityRef ref = new ExternalIdentityRef(UserConstants.DEFAULT_ANONYMOUS_ID, null); String[] result = syncMBean.syncExternalUsers(new String[]{ref.getString()}); assertResultMessages(result, UserConstants.DEFAULT_ANONYMOUS_ID, "for"); }
@Test public void testSyncExternalUserException() { ExternalIdentityRef ref = new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName()); String[] result = syncMBean.syncExternalUsers(new String[] {ref.getString()}); assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR"); }
@Test public void testSyncExternalNonExisting() { ExternalIdentityRef ref = new ExternalIdentityRef("nonExisting", idp.getName()); String[] result = syncMBean.syncExternalUsers(new String[]{ref.getString()}); assertResultMessages(result, "", "nsi"); }
@Test public void testSyncExternalUserThrowingHandler() { ExternalIdentityRef ref = new ExternalIdentityRef(TestIdentityProvider.ID_TEST_USER, idp.getName()); String[] result = createThrowingSyncMBean(false).syncExternalUsers(new String[]{ref.getString()}); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "ERR"); }
@Test public void testSyncForeignExternalUserSaveError() throws Exception { Root r = preventRootCommit(delegatee);; String[] result = delegatee.syncExternalUsers(new String[] {new ExternalIdentityRef(TestIdentityProvider.ID_TEST_USER, foreignIDP.getName()).getString()}); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for"); assertFalse(r.hasPendingChanges()); }
@Test public void testSyncThrowingExternalUserSaveError() throws Exception { Root r = preventRootCommit(delegatee);; String[] result = delegatee.syncExternalUsers(new String[] {new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName()).getString()}); assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR"); assertFalse(r.hasPendingChanges()); }
@Test public void testSyncNonExistingExternalUserSaveError() throws Exception { Root r = preventRootCommit(delegatee);; String[] result = delegatee.syncExternalUsers(new String[] {new ExternalIdentityRef("nonExisting", idp.getName()).getString()}); assertResultMessages(result, "", "nsi"); assertFalse(r.hasPendingChanges()); }
@Test public void testPurgeOrphanedUsersException() throws Exception { User u = getUserManager().createUser(TestIdentityProvider.ID_EXCEPTION, null); u.setProperty(DefaultSyncContext.REP_EXTERNAL_ID, getValueFactory().createValue(new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName()).getString())); root.commit(); String[] result = syncMBean.purgeOrphanedUsers(); assertEquals(0, result.length); }
@Test public void testSyncUserByIdUpdate() throws Exception { ExternalIdentity externalId = idp.listUsers().next(); Authorizable a = userManager.createUser(externalId.getId(), null); a.setProperty(DefaultSyncContext.REP_EXTERNAL_ID, valueFactory.createValue(externalId.getExternalId().getString())); syncContext.setForceUserSync(true); SyncResult result = syncContext.sync(externalId.getId()); assertEquals(SyncResult.Status.UPDATE, result.getStatus()); Tree t = r.getTree(a.getPath()); assertTrue(t.hasProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES)); }
@Test public void testListOrphanedUsersException () throws Exception { User u = getUserManager().createUser(TestIdentityProvider.ID_EXCEPTION, null); u.setProperty(DefaultSyncContext.REP_EXTERNAL_ID, getValueFactory().createValue(new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName()).getString())); root.commit(); String[] result = syncMBean.listOrphanedUsers(); assertEquals(0, result.length); }
/** * @see <a href="https://issues.apache.org/jira/browse/OAK-4360">OAK-4360</a> */ @Test public void testSyncUserException() throws Exception { User u = getUserManager().createUser(TestIdentityProvider.ID_EXCEPTION, null); u.setProperty(DefaultSyncContext.REP_EXTERNAL_ID, getValueFactory().createValue(new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName()).getString())); root.commit(); String[] result = syncMBean.syncUsers(new String[]{TestIdentityProvider.ID_EXCEPTION}, false); assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR"); }
@Test public void testSyncAllUsersException() throws Exception { User u = getUserManager().createUser(TestIdentityProvider.ID_EXCEPTION, null); u.setProperty(DefaultSyncContext.REP_EXTERNAL_ID, getValueFactory().createValue(new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName()).getString())); root.commit(); String[] result = syncMBean.syncAllUsers(false); assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR"); result = syncMBean.syncAllUsers(true); assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR"); }
@Test public void testInitialSyncExternalUsers() throws Exception { ExternalUser externalUser = idp.getUser(TestIdentityProvider.ID_TEST_USER); String[] externalId = new String[] {externalUser.getExternalId().getString()}; String[] result = syncMBean.syncExternalUsers(externalId); assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "add"); UserManager userManager = getUserManager(); User testUser = userManager.getAuthorizable(externalUser.getId(), User.class); assertNotNull(testUser); for (ExternalIdentityRef groupRef : externalUser.getDeclaredGroups()) { assertNotNull(userManager.getAuthorizable(groupRef.getId())); } }