You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by an...@apache.org on 2016/05/11 18:10:43 UTC
svn commit: r1743405 - in /jackrabbit/oak/trunk/oak-auth-external/src:
main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/
test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/
Author: angela
Date: Wed May 11 18:10:43 2016
New Revision: 1743405
URL: http://svn.apache.org/viewvc?rev=1743405&view=rev
Log:
OAK-4363 : SyncMBeanImpl: result lacks 'uid' if error messages has been created from ExternalIdentityRef
minor improvement: in the light of Oak-4363 adjust tests to always verify the 'uid' part of the result messages
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SyncMBeanImplTest.java
Modified: jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java?rev=1743405&r1=1743404&r2=1743405&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java (original)
+++ jackrabbit/oak/trunk/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/Delegatee.java Wed May 11 18:10:43 2016
@@ -335,9 +335,10 @@ final class Delegatee {
}
private static void append(@Nonnull List<String> list, @Nonnull ExternalIdentityRef idRef, @Nonnull Exception e) {
+ String uid = JsonUtil.getJsonString(idRef.getId());
String eid = JsonUtil.getJsonString(idRef.getString());
String msg = JsonUtil.getJsonString(e.toString());
- String jsonStr = String.format("{op:\"ERR\",uid:\"\",eid:%s,msg:%s}", eid, msg);
+ String jsonStr = String.format("{op:\"ERR\",uid:%s,eid:%s,msg:%s}", uid, eid, msg);
list.add(jsonStr);
}
Modified: jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SyncMBeanImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SyncMBeanImplTest.java?rev=1743405&r1=1743404&r2=1743405&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SyncMBeanImplTest.java (original)
+++ jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/jmx/SyncMBeanImplTest.java Wed May 11 18:10:43 2016
@@ -31,6 +31,7 @@ import javax.jcr.ValueFactory;
import com.google.common.base.Function;
import com.google.common.base.Predicates;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterators;
import com.google.common.collect.Sets;
@@ -180,12 +181,21 @@ public class SyncMBeanImplTest {
}), Predicates.notNull());
}
- private static void assertResultMessages(@Nonnull String[] resultMessages, int expectedSize, @Nonnull String... expectedOperations) {
- assertEquals(expectedSize, resultMessages.length);
+ private static void assertResultMessages(@Nonnull String[] resultMessages, String uid, @Nonnull String expectedOperation) {
+ assertResultMessages(resultMessages, ImmutableMap.of(uid, expectedOperation));
+ }
+
+ private static void assertResultMessages(@Nonnull String[] resultMessages, @Nonnull Map<String, String> expected) {
+ assertEquals(expected.size(), resultMessages.length);
for (int i = 0; i < resultMessages.length; i++) {
String rm = resultMessages[i];
String op = rm.substring(rm.indexOf(":") + 2, rm.indexOf("\","));
- assertEquals(expectedOperations[i], op);
+
+ int index = rm.indexOf("uid:\"") + 5;
+ String uid = rm.substring(index, rm.indexOf("\",", index));
+
+ assertTrue(expected.containsKey(uid));
+ assertEquals(expected.get(uid), op);
}
}
@@ -278,10 +288,10 @@ public class SyncMBeanImplTest {
String[] userIds = new String[] {TestIdentityProvider.ID_TEST_USER, TestIdentityProvider.ID_SECOND_USER};
String[] result = syncMBean.syncUsers(userIds, false);
- assertResultMessages(result, userIds.length, "nsa", "nsa");
+ assertResultMessages(result, ImmutableMap.of(TestIdentityProvider.ID_TEST_USER, "nsa", TestIdentityProvider.ID_SECOND_USER, "nsa"));
result = syncMBean.syncUsers(userIds, true);
- assertResultMessages(result, userIds.length, "nsa", "nsa");
+ assertResultMessages(result, ImmutableMap.of(TestIdentityProvider.ID_TEST_USER, "nsa", TestIdentityProvider.ID_SECOND_USER, "nsa"));
}
@Test
@@ -290,10 +300,10 @@ public class SyncMBeanImplTest {
String[] userIds = new String[]{TestIdentityProvider.ID_TEST_USER, TestIdentityProvider.ID_SECOND_USER};
String[] result = syncMBean.syncUsers(userIds, false);
- assertResultMessages(result, userIds.length, "upd", "nsa");
+ assertResultMessages(result, ImmutableMap.of(TestIdentityProvider.ID_TEST_USER, "upd", TestIdentityProvider.ID_SECOND_USER, "nsa"));
result = syncMBean.syncUsers(userIds, true);
- assertResultMessages(result, userIds.length, "upd", "nsa");
+ assertResultMessages(result, ImmutableMap.of(TestIdentityProvider.ID_TEST_USER, "upd", TestIdentityProvider.ID_SECOND_USER, "nsa"));
}
@Test
@@ -304,19 +314,19 @@ public class SyncMBeanImplTest {
syncConfig.user().setExpirationTime(Long.MAX_VALUE);
String[]result = syncMBean.syncUsers(userIds, false);
- assertResultMessages(result, userIds.length, "upd", "nsa");
+ assertResultMessages(result, ImmutableMap.of(TestIdentityProvider.ID_TEST_USER, "upd", TestIdentityProvider.ID_SECOND_USER, "nsa"));
}
@Test
public void testSyncGroups() throws Exception {
sync(idp, "a", true);
- String[] ids = new String[]{"a"};
+ Map<String, String> expected = ImmutableMap.of("a", "upd");
syncConfig.group().setExpirationTime(Long.MAX_VALUE);
// force group sync is true by default => exp time is ignored
- String[] result = syncMBean.syncUsers(ids, false);
- assertResultMessages(result, ids.length, "upd");
+ String[] result = syncMBean.syncUsers(expected.keySet().toArray(new String[expected.size()]), false);
+ assertResultMessages(result, expected);
}
@Test
@@ -332,11 +342,11 @@ public class SyncMBeanImplTest {
for (Authorizable a : authorizables) {
String[] ids = new String[]{a.getID()};
String[] result = syncMBean.syncUsers(ids, false);
- assertResultMessages(result, ids.length, "mis");
+ assertResultMessages(result, a.getID(), "mis");
assertNotNull(userManager.getAuthorizable(a.getID()));
result = syncMBean.syncUsers(ids, true);
- assertResultMessages(result, ids.length, "del");
+ assertResultMessages(result, a.getID(), "del");
assertNull(userManager.getAuthorizable(a.getID()));
}
}
@@ -344,19 +354,19 @@ public class SyncMBeanImplTest {
@Test
public void testSyncUsersNonExisting() {
String[] result = syncMBean.syncUsers(new String[] {"nonExisting"}, false);
- assertResultMessages(result, 1, "nsa");
+ assertResultMessages(result, "nonExisting", "nsa");
}
@Test
public void testSyncUsersLocal() {
String[] result = syncMBean.syncUsers(new String[] {UserConstants.DEFAULT_ANONYMOUS_ID}, false);
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, UserConstants.DEFAULT_ANONYMOUS_ID, "for");
}
@Test
public void testSyncUsersLocalPurge() throws Exception {
String[] result = syncMBean.syncUsers(new String[] {UserConstants.DEFAULT_ANONYMOUS_ID}, true);
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, UserConstants.DEFAULT_ANONYMOUS_ID, "for");
assertNotNull(userManager.getAuthorizable(UserConstants.DEFAULT_ANONYMOUS_ID));
}
@@ -370,12 +380,12 @@ public class SyncMBeanImplTest {
// syncUsers with testIDP must detect the foreign status
String[] result = syncMBean.syncUsers(new String[]{TestIdentityProvider.ID_TEST_USER}, false);
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for");
assertNotNull(userManager.getAuthorizable(TestIdentityProvider.ID_TEST_USER));
// same expected with 'purge' set to true
result = syncMBean.syncUsers(new String[] {TestIdentityProvider.ID_TEST_USER}, true);
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for");
assertNotNull(userManager.getAuthorizable(TestIdentityProvider.ID_TEST_USER));
}
@@ -388,12 +398,12 @@ public class SyncMBeanImplTest {
// syncUsers with testIDP must detect the foreign status
String[] result = syncMBean.syncUsers(new String[]{"a"}, false);
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, "a", "for");
assertNotNull(userManager.getAuthorizable("a"));
// same expected with 'purge' set to true
result = syncMBean.syncUsers(new String[] {"a"}, true);
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, "a", "for");
assertNotNull(userManager.getAuthorizable("a"));
}
@@ -407,7 +417,7 @@ public class SyncMBeanImplTest {
session.save();
String[] result = syncMBean.syncUsers(new String[]{TestIdentityProvider.ID_EXCEPTION}, false);
- assertResultMessages(result, 1, "ERR");
+ assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR");
}
@Test
@@ -415,7 +425,7 @@ public class SyncMBeanImplTest {
sync(idp, TestIdentityProvider.ID_TEST_USER, false);
String[] result = createThrowingSyncMBean(false).syncUsers(new String[]{TestIdentityProvider.ID_TEST_USER}, false);
- assertResultMessages(result, 1, "ERR");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "ERR");
}
@Test
@@ -424,7 +434,7 @@ public class SyncMBeanImplTest {
String[] externalId = new String[] {externalUser.getExternalId().getString()};
String[] result = syncMBean.syncExternalUsers(externalId);
- assertResultMessages(result, 1, "add");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "add");
User testUser = userManager.getAuthorizable(externalUser.getId(), User.class);
assertNotNull(testUser);
@@ -442,7 +452,7 @@ public class SyncMBeanImplTest {
String[] externalId = new String[] {externalUser.getExternalId().getString()};
String[] result = syncMBean.syncExternalUsers(externalId);
- assertResultMessages(result, 1, "add");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "add");
User testUser = userManager.getAuthorizable(externalUser.getId(), User.class);
assertNotNull(testUser);
@@ -488,7 +498,7 @@ public class SyncMBeanImplTest {
String[] externalId = new String[] {externalGroup.getExternalId().getString()};
String[] result = syncMBean.syncExternalUsers(externalId);
- assertResultMessages(result, 1, "add");
+ assertResultMessages(result, "a", "add");
Group aGroup = userManager.getAuthorizable(externalGroup.getId(), Group.class);
assertNotNull(aGroup);
@@ -504,7 +514,7 @@ public class SyncMBeanImplTest {
ExternalIdentityRef ref = new ExternalIdentityRef("nonExisting", idp.getName());
String[] result = syncMBean.syncExternalUsers(new String[]{ref.getString()});
- assertResultMessages(result, 1, "nsi");
+ assertResultMessages(result, "", "nsi");
}
/**
@@ -515,7 +525,7 @@ public class SyncMBeanImplTest {
ExternalIdentityRef ref = new ExternalIdentityRef(UserConstants.DEFAULT_ANONYMOUS_ID, null);
String[] result = syncMBean.syncExternalUsers(new String[]{ref.getString()});
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, UserConstants.DEFAULT_ANONYMOUS_ID, "for");
}
/**
@@ -526,24 +536,24 @@ public class SyncMBeanImplTest {
ExternalIdentityRef ref = new ExternalIdentityRef(TestIdentityProvider.ID_TEST_USER, "anotherIDP");
String[] result = syncMBean.syncExternalUsers(new String[]{ref.getString()});
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for");
result = syncMBean.syncExternalUsers(new String[] {ref.getString()});
- assertResultMessages(result, 1, "for");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "for");
}
@Test
public void testSyncExternalUserException() throws Exception {
ExternalIdentityRef ref = new ExternalIdentityRef(TestIdentityProvider.ID_EXCEPTION, idp.getName());
String[] result = syncMBean.syncExternalUsers(new String[] {ref.getString()});
- assertResultMessages(result, 1, "ERR");
+ assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR");
}
@Test
public void testSyncExternalUserThrowingHandler() throws Exception {
ExternalIdentityRef ref = new ExternalIdentityRef(TestIdentityProvider.ID_TEST_USER, idp.getName());
String[] result = createThrowingSyncMBean(false).syncExternalUsers(new String[]{ref.getString()});
- assertResultMessages(result, 1, "ERR");
+ assertResultMessages(result, TestIdentityProvider.ID_TEST_USER, "ERR");
}
/**
@@ -564,7 +574,7 @@ public class SyncMBeanImplTest {
String[] result = syncMBean.syncAllUsers(false);
Map<String, String> expected = getExpectedUserResult("upd", true);
- assertResultMessages(result, expected.size(), expected.values().toArray(new String[expected.size()]));
+ assertResultMessages(result, expected);
for (String id : expected.keySet()) {
ExternalIdentity ei = idp.getUser(id);
if (ei == null) {
@@ -587,7 +597,8 @@ public class SyncMBeanImplTest {
// verify effect of syncAllUsers (which in this case are groups)
String[] result = syncMBean.syncAllUsers(false);
- assertResultMessages(result, expected.size(), expected.values().toArray(new String[expected.size()]));
+ assertResultMessages(result, expected);
+
for (String id : expected.keySet()) {
ExternalIdentity ei = idp.getGroup(id);
assertSync(ei, userManager);
@@ -602,7 +613,7 @@ public class SyncMBeanImplTest {
// syncAll with purge = false
String[] result = syncMBean.syncAllUsers(false);
- assertResultMessages(result, 2, "mis", "mis");
+ assertResultMessages(result, ImmutableMap.of("thirdUser", "mis", "g", "mis"));
assertNotNull(userManager.getAuthorizable("thirdUser"));
assertNotNull(userManager.getAuthorizable("g"));
@@ -616,7 +627,7 @@ public class SyncMBeanImplTest {
// syncAll with purge = true
String[] result = syncMBean.syncAllUsers(true);
- assertResultMessages(result, 2, "del", "del");
+ assertResultMessages(result, ImmutableMap.of("thirdUser", "del", "g", "del"));
assertNull(userManager.getAuthorizable("thirdUser"));
assertNull(userManager.getAuthorizable("g"));
@@ -634,8 +645,8 @@ public class SyncMBeanImplTest {
// verify effect of syncAllUsers : foreign user/group must be ignored by the sync.
String[] result = syncMBean.syncAllUsers(false);
- String[] expectedResults = new String[] {"upd", "upd"};
- assertResultMessages(result, expectedResults.length, expectedResults);
+ Map<String, String> expectedResults = ImmutableMap.of(TestIdentityProvider.ID_TEST_USER, "upd", "a", "upd");
+ assertResultMessages(result, expectedResults);
ExternalIdentity[] expectedIds = new ExternalIdentity[] {
idp.getUser(TestIdentityProvider.ID_TEST_USER),
@@ -655,10 +666,10 @@ public class SyncMBeanImplTest {
session.save();
String[] result = syncMBean.syncAllUsers(false);
- assertResultMessages(result, 1, "ERR");
+ assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR");
result = syncMBean.syncAllUsers(true);
- assertResultMessages(result, 1, "ERR");
+ assertResultMessages(result, TestIdentityProvider.ID_EXCEPTION, "ERR");
}
@Test(expected = IllegalStateException.class)
@@ -673,7 +684,7 @@ public class SyncMBeanImplTest {
Map<String, String> expected = getExpectedUserResult("ERR", true);
String[] result = createThrowingSyncMBean(true).syncAllUsers(false);
- assertResultMessages(result, expected.size(), expected.values().toArray(new String[expected.size()]));
+ assertResultMessages(result, expected);
}
@Test
@@ -681,7 +692,8 @@ public class SyncMBeanImplTest {
String[] result = syncMBean.syncAllExternalUsers();
Map<String, String> expected = getExpectedUserResult("add", false);
- assertResultMessages(result, expected.size(), expected.values().toArray(new String[expected.size()]));
+ assertResultMessages(result, expected);
+
for (String id : expected.keySet()) {
ExternalIdentity ei = idp.getUser(id);
if (ei == null) {
@@ -700,7 +712,8 @@ public class SyncMBeanImplTest {
// verify result
Map<String, String> expected = getExpectedUserResult("upd", false);
- assertResultMessages(result, expected.size(), expected.values().toArray(new String[expected.size()]));
+ assertResultMessages(result, expected);
+
for (String id : expected.keySet()) {
ExternalIdentity ei = idp.getUser(id);
if (ei == null) {
@@ -715,7 +728,7 @@ public class SyncMBeanImplTest {
String[] result = createThrowingSyncMBean(false).syncAllExternalUsers();
Map<String, String> expected = getExpectedUserResult("ERR", false);
- assertResultMessages(result, expected.size(), expected.values().toArray(new String[expected.size()]));
+ assertResultMessages(result, expected);
}
@Test
@@ -781,7 +794,7 @@ public class SyncMBeanImplTest {
sync(new TestIdentityProvider.TestGroup("g", idp.getName()), idp);
String[] result = syncMBean.purgeOrphanedUsers();
- assertResultMessages(result, 2, "del", "del");
+ assertResultMessages(result, ImmutableMap.of("thirdUser", "del", "g", "del"));
assertNull(userManager.getAuthorizable("thirdUser"));
assertNull(userManager.getAuthorizable("g"));
@@ -826,7 +839,7 @@ public class SyncMBeanImplTest {
sync(new TestIdentityProvider.TestGroup("g", idp.getName()), idp);
String[] result = createThrowingSyncMBean(true).purgeOrphanedUsers();
- assertResultMessages(result, 2, "ERR", "ERR");
+ assertResultMessages(result, ImmutableMap.of("thirdUser", "ERR", "g", "ERR"));
assertNotNull(userManager.getAuthorizable("thirdUser"));
assertNotNull(userManager.getAuthorizable("g"));
}