public TestIdentity(@NotNull String userId) { this.userId = userId; this.principalName = "p_"+userId; id = new ExternalIdentityRef(userId, idp.getName()); }
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())); }
@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); } }
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 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())); }
@NotNull @Override public String fromExternalIdentityRef(@NotNull ExternalIdentityRef externalIdentityRef) throws ExternalIdentityException { if (!isMyRef(externalIdentityRef)) { throw new ExternalIdentityException("Foreign IDP " + externalIdentityRef.getString()); } return externalIdentityRef.getId(); }
@Test public void testGetPrincipalUnderscoreSign() throws Exception { ExternalUser externalUser = idp.getUser(USER_ID); for (ExternalIdentityRef ref : externalUser.getDeclaredGroups()) { String pName = idp.getIdentity(ref).getPrincipalName(); for (String n : new String[]{"_", "_" + pName.substring(1), pName.substring(0, pName.length() - 1) + "_"}) { assertNull(principalProvider.getPrincipal(n)); } } }
@Test public void testGetId() { assertEquals(externalUser.getId(), si.getId()); assertEquals(externalGroup.getId(), siGroup.getId()); SyncedIdentity siOtherId = new DefaultSyncedIdentity("otherId", externalUser.getExternalId(), false, -1); assertEquals("otherId", siOtherId.getId()); }
@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()); }
private void calcExpectedPrincipalNames(@NotNull ExternalIdentity identity, long depth, @NotNull Set<String> expected) throws Exception { if (depth <= 0) { return; } for (ExternalIdentityRef ref : identity.getDeclaredGroups()) { ExternalIdentity groupIdentity = idp.getIdentity(ref); expected.add(groupIdentity.getPrincipalName()); calcExpectedPrincipalNames(groupIdentity, depth-1, expected); } }
/** * Tests if the given {@link ExternalIdentityRef} refers to the same IDP * as associated with this context instance. * * @param ref The {@link ExternalIdentityRef} to be tested. * @return {@code true} if {@link ExternalIdentityRef#getProviderName()} refers * to the IDP associated with this context instance. */ protected boolean isSameIDP(@NotNull ExternalIdentityRef ref) { return idp.getName().equals(ref.getProviderName()); } }
protected void addIDPUser(String id) { ((TestIdentityProvider) idp).addUser(new TestIdentityProvider.TestUser(id, idp.getName())); }
@NotNull @Override public String fromExternalIdentityRef(@NotNull ExternalIdentityRef externalIdentityRef) throws ExternalIdentityException { ExternalIdentity identity = getIdentity(externalIdentityRef); if (identity == null) { throw new ExternalIdentityException(); } else { return identity.getPrincipalName(); } } }
@After public void after() throws Exception { try { if (testIdpReg != null) { testIdpReg.unregister(); testIdpReg = null; } setSyncConfig(null); } finally { super.after(); } }
@Before public void before() throws Exception { super.before(); foreignIDP = new TestIdentityProvider("anotherIDP"); }
@Override protected SecurityProvider getSecurityProvider() { if (securityProvider == null) { securityProvider = TestSecurityProvider.newTestSecurityProvider(getSecurityConfigParameters(), externalPrincipalConfiguration); // register PrincipalConfiguration with OSGi context context.registerInjectActivateService(externalPrincipalConfiguration); } return securityProvider; }
protected ExternalIdentityProvider createIDP() { return new TestIdentityProvider(); }
@Override protected void runTest() throws Exception { bean.syncExternalUsers(new String[]{new ExternalIdentityRef(getRandomUserId(), idp.getName()).getString()}); } }
@Override @Test public void testGetPrincipalDynamicGroup() throws Exception { for (ExternalIdentityRef ref : idp.getUser(USER_ID).getDeclaredGroups()) { String princName = idp.getIdentity(ref).getPrincipalName(); Principal principal = principalProvider.getPrincipal(princName); assertNotNull(principal); assertTrue(principal instanceof GroupPrincipal); } }
@Test public void testGetPrincipalDynamicGroup() throws Exception { for (ExternalIdentityRef ref : idp.getUser(USER_ID).getDeclaredGroups()) { String princName = idp.getIdentity(ref).getPrincipalName(); Principal principal = principalProvider.getPrincipal(princName); assertNotNull(principal); assertTrue(principal instanceof GroupPrincipal); } }