diff --git a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java index 9c8c8c9..b0f78a0 100644 --- a/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java +++ b/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/CopyVersionHistoryTest.java @@ -17,6 +17,7 @@ package org.apache.jackrabbit.oak.upgrade; import com.google.common.collect.Maps; +import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.core.RepositoryContext; import org.apache.jackrabbit.core.config.RepositoryConfig; import org.apache.jackrabbit.oak.Oak; @@ -37,7 +38,10 @@ import javax.jcr.PropertyType; import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.Value; +import javax.jcr.version.Version; import javax.jcr.version.VersionHistory; +import javax.jcr.version.VersionManager; import java.io.File; import java.io.IOException; @@ -47,6 +51,8 @@ import java.util.Map; import com.google.common.collect.Lists; +import static org.apache.jackrabbit.JcrConstants.JCR_PREDECESSORS; +import static org.apache.jackrabbit.JcrConstants.JCR_VERSIONHISTORY; import static org.apache.jackrabbit.JcrConstants.MIX_VERSIONABLE; import static org.apache.jackrabbit.oak.plugins.version.VersionConstants.MIX_REP_VERSIONABLE_PATHS; import static org.apache.jackrabbit.oak.upgrade.util.VersionCopyTestUtils.getOrAddNodeWithMixins; @@ -150,6 +156,7 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest { } }); + assertVersionableProperties(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG); assertExistingHistories(session, VERSIONABLES_OLD, VERSIONABLES_OLD_ORPHANED, VERSIONABLES_YOUNG, VERSIONABLES_YOUNG_ORPHANED); assertVersionablePaths(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG); @@ -164,6 +171,7 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest { } }); + assertVersionableProperties(session, VERSIONABLES_YOUNG); assertExistingHistories(session, VERSIONABLES_YOUNG, VERSIONABLES_YOUNG_ORPHANED); assertVersionablePaths(session, VERSIONABLES_YOUNG); assertMissingHistories(session, VERSIONABLES_OLD, VERSIONABLES_OLD_ORPHANED); @@ -178,6 +186,7 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest { } }); + assertVersionableProperties(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG); assertExistingHistories(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG, VERSIONABLES_YOUNG_ORPHANED); assertVersionablePaths(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG); assertMissingHistories(session, VERSIONABLES_OLD_ORPHANED); @@ -191,6 +200,7 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest { config.setCopyOrphanedVersions(null); } }); + assertVersionableProperties(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG); assertExistingHistories(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG); assertVersionablePaths(session, VERSIONABLES_OLD, VERSIONABLES_YOUNG);; assertMissingHistories(session, VERSIONABLES_OLD_ORPHANED, VERSIONABLES_YOUNG_ORPHANED); @@ -205,6 +215,7 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest { config.setCopyOrphanedVersions(null); } }); + assertVersionableProperties(session, VERSIONABLES_YOUNG); assertExistingHistories(session, VERSIONABLES_YOUNG); assertVersionablePaths(session, VERSIONABLES_YOUNG); assertMissingHistories(session, VERSIONABLES_OLD, VERSIONABLES_OLD_ORPHANED, VERSIONABLES_YOUNG_ORPHANED); @@ -282,6 +293,26 @@ public class CopyVersionHistoryTest extends AbstractRepositoryUpgradeTest { return null; } + private static void assertVersionableProperties(final Session session, final String... names) throws RepositoryException { + VersionManager vMgr = session.getWorkspace().getVersionManager(); + for (final String mixin : MIXINS) { + final String pathPrefix = VERSIONABLES_PATH_PREFIX + mixin + "/"; + for (final String name : names) { + final String path = pathPrefix + name; + Node versionable = session.getNode(path); + + String versionHistoryUuid = versionable.getProperty(JCR_VERSIONHISTORY).getString(); + assertEquals(getVersionHistoryForPath(session, path).getIdentifier(), versionHistoryUuid); + + final Version baseVersion = vMgr.getBaseVersion(path); + assertEquals("1.2", baseVersion.getName()); + final Value[] predecessors = versionable.getProperty(JCR_PREDECESSORS).getValues(); + assertEquals(1, predecessors.length); + assertEquals(baseVersion.getIdentifier(), predecessors[0].getString()); + } + } + } + private static void assertExistingHistories(final Session session, final String... names) throws RepositoryException { for (final String mixin : MIXINS) {