Index: oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportPwExpiryTest.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportPwExpiryTest.java (revision 1607835) +++ oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/security/user/UserImportPwExpiryTest.java (revision ) @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableMap; import org.apache.jackrabbit.api.security.user.Authorizable; +import org.apache.jackrabbit.api.security.user.User; import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters; import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration; import org.apache.jackrabbit.oak.spi.security.user.UserConstants; @@ -143,6 +144,47 @@ Property custom = pwdNode.getProperty("customProp"); assertTrue(custom.getDefinition().isProtected()); assertEquals("abc", custom.getString()); + } + /** + * @since Oak 1.1 + */ + @Test + public void testImportExistingUserWithoutExpiryProperty() throws Exception { + + String uid = "existing"; + User user = userMgr.createUser(uid, uid); + + // change password to force existence of password last modified property + user.changePassword(uid); + adminSession.save(); + + Node userNode = adminSession.getNode(user.getPath()); + assertTrue(userNode.hasNode(UserConstants.REP_PWD)); + Node pwdNode = userNode.getNode(UserConstants.REP_PWD); + assertTrue(pwdNode.hasProperty(UserConstants.REP_PASSWORD_LAST_MODIFIED)); + + // overwrite user via import + String xml = "\n" + + "" + + " " + + " rep:User" + + " " + + " " + + " " + uid + "" + + " " + + " " + + " " + uid + "Principal" + + " " + + ""; + + doImport(USERPATH, xml); + + Authorizable authorizable = userMgr.getAuthorizable(uid); + userNode = adminSession.getNode(authorizable.getPath()); + assertTrue(userNode.hasNode(UserConstants.REP_PWD)); + + pwdNode = userNode.getNode(UserConstants.REP_PWD); + assertTrue(pwdNode.hasProperty(UserConstants.REP_PASSWORD_LAST_MODIFIED)); } }