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();


Reply via email to