Author: angela
Date: Wed Jun 8 15:30:28 2016
New Revision: 1747406
URL: http://svn.apache.org/viewvc?rev=1747406&view=rev
Log:
OAK-4448 : Test failures that rely on expiration time to experience a re-sync
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleDynamicMembershipTest.java
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/PreAuthDefaultExternalLoginModuleTest.java
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncContextTest.java
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java?rev=1747406&r1=1747405&r2=1747406&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java
(original)
+++
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/AbstractExternalAuthTest.java
Wed Jun 8 15:30:28 2016
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.spi.security.authentication.external;
import java.security.PrivilegedExceptionAction;
+import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -33,13 +34,18 @@ import com.google.common.base.Predicates
import com.google.common.collect.Iterators;
import com.google.common.collect.Sets;
import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.AbstractSecurityTest;
import org.apache.jackrabbit.oak.api.ContentSession;
+import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Root;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
import org.apache.jackrabbit.oak.spi.security.authentication.SystemSubject;
import
org.apache.jackrabbit.oak.spi.security.authentication.external.basic.DefaultSyncConfig;
+import
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.ExternalIdentityConstants;
import
org.apache.jackrabbit.oak.spi.security.authentication.external.impl.principal.ExternalPrincipalConfiguration;
import org.junit.After;
import org.junit.Before;
@@ -163,4 +169,18 @@ public abstract class AbstractExternalAu
}
return systemRoot;
}
+
+ protected static void waitUntilExpired(@Nonnull User user, @Nonnull Root
root, long expTime) throws RepositoryException {
+ Tree t = root.getTree(user.getPath());
+ PropertyState ps =
t.getProperty(ExternalIdentityConstants.REP_LAST_SYNCED);
+ if (ps == null || ps.count() == 0) {
+ return;
+ }
+
+ long lastSynced = ps.getValue(Type.LONG);
+ long now = Calendar.getInstance().getTimeInMillis();
+ while (now - lastSynced <= expTime) {
+ now = Calendar.getInstance().getTimeInMillis();
+ }
+ }
}
\ No newline at end of file
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleDynamicMembershipTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleDynamicMembershipTest.java?rev=1747406&r1=1747405&r2=1747406&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleDynamicMembershipTest.java
(original)
+++
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/ExternalLoginModuleDynamicMembershipTest.java
Wed Jun 8 15:30:28 2016
@@ -227,17 +227,19 @@ public class ExternalLoginModuleDynamicM
// synchronized users with full membership sync.
Root systemRoot = getSystemRoot();
UserManager userManager = getUserManager(systemRoot);
- Authorizable a = userManager.getAuthorizable(USER_ID);
-
a.removeProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES);
+ User user = userManager.getAuthorizable(USER_ID, User.class);
+
user.removeProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES);
systemRoot.commit();
+ waitUntilExpired(user, systemRoot,
syncConfig.user().getExpirationTime());
+
// login again
login(new SimpleCredentials(USER_ID, new char[0])).close();
systemRoot.refresh();
- a = userManager.getAuthorizable(USER_ID);
-
assertTrue(a.hasProperty(ExternalIdentityConstants.REP_LAST_SYNCED));
-
assertFalse(a.hasProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES));
+ user = userManager.getAuthorizable(USER_ID, User.class);
+
assertTrue(user.hasProperty(ExternalIdentityConstants.REP_LAST_SYNCED));
+
assertFalse(user.hasProperty(ExternalIdentityConstants.REP_EXTERNAL_PRINCIPAL_NAMES));
for (ExternalIdentityRef ref :
idp.getUser(USER_ID).getDeclaredGroups()) {
assertNotNull(userManager.getAuthorizable(ref.getId()));
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/PreAuthDefaultExternalLoginModuleTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/PreAuthDefaultExternalLoginModuleTest.java?rev=1747406&r1=1747405&r2=1747406&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/PreAuthDefaultExternalLoginModuleTest.java
(original)
+++
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/PreAuthDefaultExternalLoginModuleTest.java
Wed Jun 8 15:30:28 2016
@@ -26,6 +26,7 @@ import javax.security.auth.login.Configu
import javax.security.auth.login.LoginException;
import org.apache.jackrabbit.api.security.user.User;
+import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.jackrabbit.oak.api.ContentSession;
import org.apache.jackrabbit.oak.security.authentication.user.LoginModuleImpl;
import
org.apache.jackrabbit.oak.spi.security.authentication.external.basic.DefaultSyncContext;
@@ -154,7 +155,8 @@ public class PreAuthDefaultExternalLogin
@Test
public void testExistingExternalReSync() throws Exception {
// sync user upfront
- SyncContext syncContext = new DefaultSyncContext(syncConfig, idp,
getUserManager(root), getValueFactory(root));
+ UserManager uMgr = getUserManager(root);
+ SyncContext syncContext = new DefaultSyncContext(syncConfig, idp,
uMgr, getValueFactory(root));
SyncResult result =
syncContext.sync(idp.getUser(TestIdentityProvider.ID_TEST_USER));
long lastSynced = result.getIdentity().lastSynced();
root.commit();
@@ -162,6 +164,9 @@ public class PreAuthDefaultExternalLogin
PreAuthCredentials creds = new
PreAuthCredentials(TestIdentityProvider.ID_TEST_USER);
ContentSession cs = null;
try {
+ // wait until the synced user is expired
+
waitUntilExpired(uMgr.getAuthorizable(TestIdentityProvider.ID_TEST_USER,
User.class), root, syncConfig.user().getExpirationTime());
+
cs = login(creds);
assertEquals(PreAuthCredentials.PRE_AUTH_DONE, creds.getMessage());
Modified:
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncContextTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncContextTest.java?rev=1747406&r1=1747405&r2=1747406&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncContextTest.java
(original)
+++
jackrabbit/oak/trunk/oak-auth-external/src/test/java/org/apache/jackrabbit/oak/spi/security/authentication/external/basic/DefaultSyncContextTest.java
Wed Jun 8 15:30:28 2016
@@ -587,10 +587,8 @@ public class DefaultSyncContextTest exte
gr.addMember(user);
root.commit();
+ waitUntilExpired(user, root, expTime);
DefaultSyncContext newCtx = new DefaultSyncContext(syncConfig, idp,
userManager, valueFactory);
- while (!newCtx.isExpired(user, expTime, "Properties")) {
- newCtx = new DefaultSyncContext(syncConfig, idp, userManager,
valueFactory);
- }
result = newCtx.sync(user.getID());
root.commit();