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 2015/01/28 13:40:53 UTC

svn commit: r1655283 - in /jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade: PrivilegeUpgradeTest.java RepositoryUpgradeTest.java

Author: angela
Date: Wed Jan 28 12:40:53 2015
New Revision: 1655283

URL: http://svn.apache.org/r1655283
Log:
OAK-2400 : test cases (move privilege related test to separate test-class and add more tests wrt privilege bits)

Added:
    jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java
      - copied, changed from r1655065, jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java
Modified:
    jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java

Copied: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java (from r1655065, jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java?p2=jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java&p1=jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java&r1=1655065&r2=1655283&rev=1655283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/PrivilegeUpgradeTest.java Wed Jan 28 12:40:53 2015
@@ -18,18 +18,34 @@
  */
 package org.apache.jackrabbit.oak.upgrade;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.Node;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.security.Privilege;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Maps;
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.JackrabbitWorkspace;
+import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeBits;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
+import org.junit.Test;
+
 import static com.google.common.collect.Sets.newHashSet;
 import static java.util.Arrays.asList;
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertTrue;
-import static org.apache.jackrabbit.JcrConstants.JCR_FROZENMIXINTYPES;
-import static org.apache.jackrabbit.JcrConstants.JCR_FROZENPRIMARYTYPE;
-import static org.apache.jackrabbit.JcrConstants.JCR_FROZENUUID;
-import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
-import static org.apache.jackrabbit.JcrConstants.MIX_VERSIONABLE;
-import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
 import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_ADD_CHILD_NODES;
 import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_ALL;
 import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_LIFECYCLE_MANAGEMENT;
@@ -57,63 +73,14 @@ import static org.apache.jackrabbit.oak.
 import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_USER_MANAGEMENT;
 import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_WRITE;
 
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-
-import javax.jcr.Binary;
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.Node;
-import javax.jcr.NodeIterator;
-import javax.jcr.Property;
-import javax.jcr.PropertyIterator;
-import javax.jcr.PropertyType;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.Value;
-import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.NodeTypeManager;
-import javax.jcr.nodetype.NodeTypeTemplate;
-import javax.jcr.nodetype.PropertyDefinition;
-import javax.jcr.nodetype.PropertyDefinitionTemplate;
-import javax.jcr.security.Privilege;
-import javax.jcr.version.Version;
-import javax.jcr.version.VersionHistory;
-import javax.jcr.version.VersionManager;
-
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import org.apache.jackrabbit.api.JackrabbitSession;
-import org.apache.jackrabbit.api.JackrabbitWorkspace;
-import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
-import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
-import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
-import org.junit.Test;
-
-public class RepositoryUpgradeTest extends AbstractRepositoryUpgradeTest {
-
-    private static final Calendar DATE = Calendar.getInstance();
-
-    private static final byte[] BINARY = new byte[64 * 1024];
-
-    static {
-        new Random().nextBytes(BINARY);
-    }
+public class PrivilegeUpgradeTest extends AbstractRepositoryUpgradeTest {
 
     @Override
     @SuppressWarnings("unchecked")
     protected void createSourceContent(Repository repository) throws Exception {
         Session session = repository.login(CREDENTIALS);
         try {
-            JackrabbitWorkspace workspace =
-                    (JackrabbitWorkspace) session.getWorkspace();
+            JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
 
             NamespaceRegistry registry = workspace.getNamespaceRegistry();
             registry.registerNamespace("test", "http://www.example.org/");
@@ -122,99 +89,10 @@ public class RepositoryUpgradeTest exten
             privilegeManager.registerPrivilege("test:privilege", false, null);
             privilegeManager.registerPrivilege(
                     "test:aggregate", false, new String[] { "jcr:read", "test:privilege" });
+            privilegeManager.registerPrivilege("test:privilege2", true, null);
+            privilegeManager.registerPrivilege(
+                    "test:aggregate2", true, new String[] { "test:aggregate", "test:privilege2" });
 
-            NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager();
-            NodeTypeTemplate template = nodeTypeManager.createNodeTypeTemplate();
-            template.setName("test:unstructured");
-            template.setDeclaredSuperTypeNames(
-                    new String[] {"nt:unstructured"});
-            PropertyDefinitionTemplate pDef1 = nodeTypeManager.createPropertyDefinitionTemplate();
-            pDef1.setName("defaultString");
-            pDef1.setRequiredType(PropertyType.STRING);
-            Value stringValue = session.getValueFactory().createValue("stringValue");
-            pDef1.setDefaultValues(new Value[] {stringValue});
-            template.getPropertyDefinitionTemplates().add(pDef1);
-
-            PropertyDefinitionTemplate pDef2 = nodeTypeManager.createPropertyDefinitionTemplate();
-            pDef2.setName("defaultPath");
-            pDef2.setRequiredType(PropertyType.PATH);
-            Value pathValue = session.getValueFactory().createValue("/jcr:path/nt:value", PropertyType.PATH);
-            pDef2.setDefaultValues(new Value[] {pathValue});
-            template.getPropertyDefinitionTemplates().add(pDef2);
-
-            nodeTypeManager.registerNodeType(template, false);
-
-            template = nodeTypeManager.createNodeTypeTemplate();
-            template.setName("test:referenceable");
-            template.setDeclaredSuperTypeNames(
-                    new String[] {"nt:unstructured", "mix:referenceable"});
-            nodeTypeManager.registerNodeType(template, false);
-
-            Node root = session.getRootNode();
-
-            Node referenceable =
-                root.addNode("referenceable", "test:unstructured");
-            referenceable.addMixin(NodeType.MIX_REFERENCEABLE);
-            Node versionable = root.addNode("versionable", NT_UNSTRUCTURED);
-            versionable.addMixin(MIX_VERSIONABLE);
-            Node child = versionable.addNode("child", "test:referenceable");
-            child.addNode("child2", NT_UNSTRUCTURED);
-            session.save();
-
-            Node sns = root.addNode("sns");
-            sns.addNode("sibling");
-            sns.addNode("sibling");
-            sns.addNode("sibling");
-
-            session.getWorkspace().getVersionManager().checkin("/versionable");
-
-            Node properties = root.addNode("properties", "test:unstructured");
-            properties.setProperty("boolean", true);
-            Binary binary = session.getValueFactory().createBinary(
-                    new ByteArrayInputStream(BINARY));
-            try {
-                properties.setProperty("binary", binary);
-            } finally {
-                binary.dispose();
-            }
-            properties.setProperty("date", DATE);
-            properties.setProperty("decimal", new BigDecimal(123));
-            properties.setProperty("double", Math.PI);
-            properties.setProperty("long", 9876543210L);
-            properties.setProperty("reference", referenceable);
-            properties.setProperty("weak_reference", session.getValueFactory().createValue(referenceable, true));
-            properties.setProperty("mv_reference", new Value[]{session.getValueFactory().createValue(versionable, false)});
-            properties.setProperty("mv_weak_reference", new Value[]{session.getValueFactory().createValue(versionable, true)});
-            properties.setProperty("string", "test");
-            properties.setProperty("multiple", "a,b,c".split(","));
-            session.save();
-
-            binary = properties.getProperty("binary").getBinary();
-            try {
-                InputStream stream = binary.getStream();
-                try {
-                    for (byte aBINARY : BINARY) {
-                        assertEquals(aBINARY, (byte) stream.read());
-                    }
-                    assertEquals(-1, stream.read());
-                } finally {
-                    stream.close();
-                }
-            } finally {
-                binary.dispose();
-            }
-        } finally {
-            session.logout();
-        }
-    }
-
-    @Test
-    public void verifyNameSpaces() throws Exception {
-        Session session = createAdminSession();
-        try {
-            assertEquals(
-                    "http://www.example.org/",
-                    session.getNamespaceURI("test"));
         } finally {
             session.logout();
         }
@@ -229,30 +107,34 @@ public class RepositoryUpgradeTest exten
             JCR_VERSION_MANAGEMENT, JCR_LOCK_MANAGEMENT, JCR_LIFECYCLE_MANAGEMENT,
             JCR_RETENTION_MANAGEMENT, JCR_WORKSPACE_MANAGEMENT, JCR_NODE_TYPE_DEFINITION_MANAGEMENT,
             JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_USER_MANAGEMENT,
-            REP_INDEX_DEFINITION_MANAGEMENT);
+            REP_INDEX_DEFINITION_MANAGEMENT, "test:privilege", "test:privilege2");
 
-        Map<String, String[]> aggregatePrivileges = Maps.newHashMap();
+        Map<String, Set<String>> aggregatePrivileges = Maps.newHashMap();
         aggregatePrivileges.put(JCR_READ,
-                new String[] {REP_READ_NODES, REP_READ_PROPERTIES});
+                ImmutableSet.of(REP_READ_NODES, REP_READ_PROPERTIES));
         aggregatePrivileges.put(JCR_MODIFY_PROPERTIES,
-                new String[] {REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES, REP_REMOVE_PROPERTIES});
+                ImmutableSet.of(REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES, REP_REMOVE_PROPERTIES));
         aggregatePrivileges.put(JCR_WRITE,
-                new String[] {JCR_MODIFY_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
+                ImmutableSet.of(JCR_MODIFY_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
                         REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES,
-                        JCR_REMOVE_NODE});
+                        JCR_REMOVE_NODE));
         aggregatePrivileges.put(REP_WRITE,
-                new String[] {JCR_WRITE, JCR_MODIFY_PROPERTIES, REP_ADD_PROPERTIES,
+                ImmutableSet.of(JCR_WRITE, JCR_MODIFY_PROPERTIES, REP_ADD_PROPERTIES,
                         REP_ALTER_PROPERTIES, REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES,
-                        JCR_REMOVE_CHILD_NODES, JCR_REMOVE_NODE, JCR_NODE_TYPE_MANAGEMENT});
+                        JCR_REMOVE_CHILD_NODES, JCR_REMOVE_NODE, JCR_NODE_TYPE_MANAGEMENT));
         aggregatePrivileges.put(JCR_ALL,
-                new String[] {REP_READ_NODES, REP_READ_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
+                ImmutableSet.of(REP_READ_NODES, REP_READ_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
                         REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES, JCR_REMOVE_NODE,
                         JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL, JCR_NODE_TYPE_MANAGEMENT,
                         JCR_VERSION_MANAGEMENT, JCR_LOCK_MANAGEMENT, JCR_LIFECYCLE_MANAGEMENT,
                         JCR_RETENTION_MANAGEMENT, JCR_WORKSPACE_MANAGEMENT, JCR_NODE_TYPE_DEFINITION_MANAGEMENT,
                         JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_USER_MANAGEMENT,
                         REP_INDEX_DEFINITION_MANAGEMENT, JCR_READ, JCR_MODIFY_PROPERTIES, JCR_WRITE, REP_WRITE,
-                        "test:privilege", "test:aggregate"});
+                        "test:privilege", "test:privilege2", "test:aggregate", "test:aggregate2"));
+        aggregatePrivileges.put("test:aggregate",
+                ImmutableSet.of(JCR_READ, REP_READ_NODES, REP_READ_PROPERTIES, "test:privilege"));
+        aggregatePrivileges.put("test:aggregate2",
+                ImmutableSet.of(JCR_READ, REP_READ_NODES, REP_READ_PROPERTIES, "test:privilege", "test:privilege2", "test:aggregate"));
 
         JackrabbitSession session = createAdminSession();
         try {
@@ -262,11 +144,11 @@ public class RepositoryUpgradeTest exten
 
             for (Privilege privilege : privileges) {
                 if (privilege.isAggregate()) {
-                    String[] expected = aggregatePrivileges.remove(privilege.getName());
+                    Set<String> expected = aggregatePrivileges.remove(privilege.getName());
                     if (expected != null) {
                         String[] actual = getNames(privilege.getAggregatePrivileges());
                         assertTrue("Miss match in aggregate privilege " + privilege.getName() +
-                                " expected " + Arrays.toString(expected) +
+                                " expected " + expected +
                                 " actual " + Arrays.toString(actual),
                             newHashSet(expected).equals(newHashSet(actual)));
                     }
@@ -275,10 +157,8 @@ public class RepositoryUpgradeTest exten
                 }
             }
 
-            assertTrue("Missing non aggregate privileges: " + nonAggregatePrivileges,
-                    nonAggregatePrivileges.isEmpty());
-            assertTrue("Missing aggregate privileges: " + aggregatePrivileges.keySet(),
-                aggregatePrivileges.isEmpty());
+            assertTrue("Missing non aggregate privileges: " + nonAggregatePrivileges, nonAggregatePrivileges.isEmpty());
+            assertTrue("Missing aggregate privileges: " + aggregatePrivileges.keySet(), aggregatePrivileges.isEmpty());
         }
         finally {
             session.logout();
@@ -297,8 +177,7 @@ public class RepositoryUpgradeTest exten
     public void verifyCustomPrivileges() throws Exception {
         JackrabbitSession session = createAdminSession();
         try {
-            JackrabbitWorkspace workspace =
-                    (JackrabbitWorkspace) session.getWorkspace();
+            JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
             PrivilegeManager manager = workspace.getPrivilegeManager();
 
             Privilege privilege = manager.getPrivilege("test:privilege");
@@ -307,277 +186,91 @@ public class RepositoryUpgradeTest exten
             assertFalse(privilege.isAggregate());
             assertEquals(0, privilege.getDeclaredAggregatePrivileges().length);
 
+            Privilege privilege2 = manager.getPrivilege("test:privilege2");
+            assertNotNull(privilege2);
+            assertTrue(privilege2.isAbstract());
+            assertFalse(privilege2.isAggregate());
+            assertEquals(0, privilege.getDeclaredAggregatePrivileges().length);
+
             Privilege aggregate = manager.getPrivilege("test:aggregate");
             assertNotNull(aggregate);
             assertFalse(aggregate.isAbstract());
             assertTrue(aggregate.isAggregate());
-            assertEquals(2, aggregate.getDeclaredAggregatePrivileges().length);
+            List<Privilege> agg = ImmutableList.copyOf(aggregate.getDeclaredAggregatePrivileges());
+            assertEquals(2, agg.size());
+            assertTrue(agg.contains(privilege));
+            assertTrue(agg.contains(manager.getPrivilege(JCR_READ)));
+
+            Privilege aggregate2 = manager.getPrivilege("test:aggregate2");
+            assertNotNull(aggregate2);
+            assertTrue(aggregate2.isAbstract());
+            assertTrue(aggregate2.isAggregate());
+            List<Privilege> agg2 = ImmutableList.copyOf(aggregate2.getDeclaredAggregatePrivileges());
+            assertEquals(2, agg2.size());
+            assertTrue(agg2.contains(aggregate));
+            assertTrue(agg2.contains(privilege2));
 
             Privilege jcrAll = manager.getPrivilege("jcr:all");
             List<Privilege> privileges = asList(jcrAll.getAggregatePrivileges());
             assertTrue(privileges.contains(privilege));
+            assertTrue(privileges.contains(privilege2));
             assertTrue(privileges.contains(aggregate));
+            assertTrue(privileges.contains(aggregate2));
         } finally {
             session.logout();
         }
     }
 
     @Test
-    public void verifyCustomNodeTypes() throws Exception {
-        Session session = createAdminSession();
+    public void verifyCustomPrivilegeBits() throws Exception {
+        JackrabbitSession session = createAdminSession();
         try {
-            NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
-            assertTrue(manager.hasNodeType("test:unstructured"));
+            Node privilegeRoot = session.getNode(PrivilegeConstants.PRIVILEGES_PATH);
 
-            NodeType type = manager.getNodeType("test:unstructured");
-            assertFalse(type.isMixin());
-            assertTrue(type.isNodeType("nt:unstructured"));
-            boolean foundDefaultString = false;
-            boolean foundDefaultPath = false;
-            for (PropertyDefinition pDef : type.getPropertyDefinitions()) {
-                if ("defaultString".equals(pDef.getName())) {
-                    assertEquals(PropertyType.STRING, pDef.getRequiredType());
-                    assertNotNull(pDef.getDefaultValues());
-                    assertEquals(1, pDef.getDefaultValues().length);
-                    assertEquals("stringValue", pDef.getDefaultValues()[0].getString());
-                    foundDefaultString = true;
-                } else if ("defaultPath".equals(pDef.getName())) {
-                    assertEquals(PropertyType.PATH, pDef.getRequiredType());
-                    assertNotNull(pDef.getDefaultValues());
-                    assertEquals(1, pDef.getDefaultValues().length);
-                    assertEquals("/jcr:path/nt:value", pDef.getDefaultValues()[0].getString());
-                    foundDefaultPath = true;
-                }
+            Node testPrivilegeNode = privilegeRoot.getNode("test:privilege");
+            long l = getLong(testPrivilegeNode);
+            PrivilegeBits pb = readBits(testPrivilegeNode, PrivilegeConstants.REP_BITS);
+
+
+            Node testPrivilege2Node = privilegeRoot.getNode("test:privilege2");
+            long l2 = getLong(testPrivilege2Node);
+            PrivilegeBits pb2 = readBits(testPrivilege2Node, PrivilegeConstants.REP_BITS);
+
+            PrivilegeBits nextExpected;
+            if (l < l2) {
+                assertEquals(PrivilegeBits.NEXT_AFTER_BUILT_INS, pb);
+                assertEquals(pb.nextBits(), pb2);
+                nextExpected = pb2.nextBits();
+            } else {
+                assertEquals(PrivilegeBits.NEXT_AFTER_BUILT_INS, pb2);
+                assertEquals(pb2.nextBits(), pb);
+                nextExpected = pb.nextBits();
             }
-            assertTrue("Expected property definition with name \"defaultString\"", foundDefaultString);
-            assertTrue("Expected property definition with name \"defaultPath\"", foundDefaultPath);
-        } finally {
-            session.logout();
-        }
-    }
 
-    @Test
-    public void verifyNewBuiltinNodeTypes() throws Exception {
-        Session session = createAdminSession();
-        try {
-            NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
-            assertTrue(manager.hasNodeType(UserConstants.NT_REP_MEMBER_REFERENCES));
-            assertTrue(manager.hasNodeType(IndexConstants.INDEX_DEFINITIONS_NODE_TYPE));
-        } finally {
-            session.logout();
-        }
-    }
+            // make sure the next-value has been properly set
+            PrivilegeBits nextBits = readBits(privilegeRoot, PrivilegeConstants.REP_NEXT);
+            assertEquals(nextExpected, nextBits);
+
+            Node testAggregateNode = privilegeRoot.getNode("test:aggregate");
+            PrivilegeBits aggrPb = readBits(testAggregateNode, PrivilegeConstants.REP_BITS);
+            PrivilegeBits expected = PrivilegeBits.getInstance(PrivilegeBits.BUILT_IN.get(PrivilegeConstants.JCR_READ), pb).unmodifiable();
+            assertEquals(expected, aggrPb);
+
+            Node testAggregate2Node = privilegeRoot.getNode("test:aggregate2");
+            PrivilegeBits aggr2Pb = readBits(testAggregate2Node, PrivilegeConstants.REP_BITS);
+            PrivilegeBits expected2 = PrivilegeBits.getInstance(aggrPb, pb2).unmodifiable();
+            assertEquals(expected2, aggr2Pb);
 
-    @Test
-    public void verifyReplacedBuiltinNodeTypes() throws Exception {
-        Session session = createAdminSession();
-        try {
-            NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
-            NodeType nt = manager.getNodeType(UserConstants.NT_REP_GROUP);
-            assertTrue("Migrated repository must have new nodetype definitions", nt.isNodeType(UserConstants.NT_REP_MEMBER_REFERENCES));
         } finally {
             session.logout();
         }
     }
 
-    @Test
-    public void verifyGenericProperties() throws Exception {
-        Session session = createAdminSession();
-        try {
-            assertTrue(session.nodeExists("/properties"));
-            Node properties = session.getNode("/properties");
-            assertEquals(
-                    PropertyType.BOOLEAN,
-                    properties.getProperty("boolean").getType());
-            assertEquals(
-                    true, properties.getProperty("boolean").getBoolean());
-            assertEquals(
-                    PropertyType.BINARY,
-                    properties.getProperty("binary").getType());
-            Binary binary = properties.getProperty("binary").getBinary();
-            try {
-                InputStream stream = binary.getStream();
-                try {
-                    for (byte aBINARY : BINARY) {
-                        assertEquals(aBINARY, (byte) stream.read());
-                    }
-                    assertEquals(-1, stream.read());
-                } finally {
-                    stream.close();
-                }
-            } finally {
-                binary.dispose();
-            }
-            assertEquals(
-                    PropertyType.DATE,
-                    properties.getProperty("date").getType());
-            assertEquals(
-                    DATE.getTimeInMillis(),
-                    properties.getProperty("date").getDate().getTimeInMillis());
-            assertEquals(
-                    PropertyType.DECIMAL,
-                    properties.getProperty("decimal").getType());
-            assertEquals(
-                    new BigDecimal(123),
-                    properties.getProperty("decimal").getDecimal());
-            assertEquals(
-                    PropertyType.DOUBLE,
-                    properties.getProperty("double").getType());
-            assertEquals(
-                    Math.PI, properties.getProperty("double").getDouble());
-            assertEquals(
-                    PropertyType.LONG,
-                    properties.getProperty("long").getType());
-            assertEquals(
-                    9876543210L, properties.getProperty("long").getLong());
-            assertEquals(
-                    PropertyType.STRING,
-                    properties.getProperty("string").getType());
-            assertEquals(
-                    "test", properties.getProperty("string").getString());
-            assertEquals(
-                    PropertyType.STRING,
-                    properties.getProperty("multiple").getType());
-            Value[] values = properties.getProperty("multiple").getValues();
-            assertEquals(3, values.length);
-            assertEquals("a", values[0].getString());
-            assertEquals("b", values[1].getString());
-            assertEquals("c", values[2].getString());
-        } finally {
-            session.logout();
-        }
-    }
-
-    @Test
-    public void verifyReferencePropertiesContent() throws Exception {
-        Session session = createAdminSession();
-        try {
-            assertTrue(session.nodeExists("/referenceable"));
-            String testNodeIdentifier =
-                    session.getNode("/referenceable").getIdentifier();
-
-            assertTrue(session.nodeExists("/properties"));
-            Node properties = session.getNode("/properties");
-
-            assertEquals(
-                    PropertyType.REFERENCE,
-                    properties.getProperty("reference").getType());
-            assertEquals(
-                    testNodeIdentifier,
-                    properties.getProperty("reference").getString());
-            assertEquals(
-                    "/referenceable",
-                    properties.getProperty("reference").getNode().getPath());
-            PropertyIterator refs = session.getNode("/referenceable").getReferences();
-            assertTrue(refs.hasNext());
-            assertEquals(properties.getPath() + "/reference", refs.nextProperty().getPath());
-            assertFalse(refs.hasNext());
-
-            PropertyIterator refs2 = session.getNode("/versionable").getReferences();
-            assertTrue(refs2.hasNext());
-            assertEquals(properties.getPath() + "/mv_reference", refs2.nextProperty().getPath());
-            assertFalse(refs2.hasNext());
-
-            assertEquals(
-                    PropertyType.WEAKREFERENCE,
-                    properties.getProperty("weak_reference").getType());
-            assertEquals(
-                    testNodeIdentifier,
-                    properties.getProperty("weak_reference").getString());
-            assertEquals(
-                    "/referenceable",
-                    properties.getProperty("weak_reference").getNode().getPath());
-            PropertyIterator weakRefs = session.getNode("/referenceable").getWeakReferences();
-            assertTrue(weakRefs.hasNext());
-            assertEquals(properties.getPath() + "/weak_reference", weakRefs.nextProperty().getPath());
-            assertFalse(weakRefs.hasNext());
-            PropertyIterator weakRefs2 = session.getNode("/versionable").getWeakReferences();
-            assertTrue(weakRefs2.hasNext());
-            assertEquals(properties.getPath() + "/mv_weak_reference", weakRefs2.nextProperty().getPath());
-            assertFalse(weakRefs2.hasNext());
-        } finally {
-            session.logout();
-        }
-    }
-
-    @Test
-    public void verifyVersionHistory() throws RepositoryException {
-        Session session = createAdminSession();
-        try {
-            assertTrue(session.nodeExists("/versionable"));
-            Node versionable = session.getNode("/versionable");
-            assertTrue(versionable.hasNode("child"));
-            Node child = versionable.getNode("child");
-            assertTrue(child.hasNode("child2"));
-            Node child2 = child.getNode("child2");
-
-            assertFalse(versionable.isCheckedOut());
-            assertTrue(versionable.hasProperty(JCR_UUID));
-            assertFalse(child.isCheckedOut());
-            assertTrue(child.hasProperty(JCR_UUID));
-            assertFalse(child2.isCheckedOut());
-            assertFalse(child2.hasProperty(JCR_UUID));
-
-            VersionManager manager = session.getWorkspace().getVersionManager();
-            Version version = manager.getBaseVersion("/versionable");
-
-            Node frozen = version.getFrozenNode();
-            assertEquals(
-                    versionable.getPrimaryNodeType().getName(),
-                    frozen.getProperty(JCR_FROZENPRIMARYTYPE).getString());
-            assertEquals(
-                    versionable.getMixinNodeTypes()[0].getName(),
-                    frozen.getProperty(JCR_FROZENMIXINTYPES).getValues()[0].getString());
-            assertEquals(
-                    versionable.getIdentifier(),
-                    frozen.getProperty(JCR_FROZENUUID).getString());
-
-            Node frozenChild = frozen.getNode("child");
-            assertEquals(
-                    child.getPrimaryNodeType().getName(),
-                    frozenChild.getProperty(JCR_FROZENPRIMARYTYPE).getString());
-            assertFalse(frozenChild.hasProperty(JCR_FROZENMIXINTYPES));
-            assertEquals(
-                    "OAK-1789",
-                    child.getIdentifier(),
-                    frozenChild.getProperty(JCR_FROZENUUID).getString());
-
-            Node frozenChild2 = frozenChild.getNode("child2");
-            assertEquals(
-                    child2.getPrimaryNodeType().getName(),
-                    frozenChild2.getProperty(JCR_FROZENPRIMARYTYPE).getString());
-            assertFalse(frozenChild2.hasProperty(JCR_FROZENMIXINTYPES));
-            assertEquals(
-                    "OAK-1789",
-                    child2.getIdentifier(),
-                    frozenChild2.getProperty(JCR_FROZENUUID).getString());
-
-            VersionHistory history = manager.getVersionHistory("/versionable");
-            assertTrue(history.isNodeType("rep:VersionablePaths"));
-            Property versionablePath = history.getProperty("default");
-            assertEquals("/versionable", versionablePath.getString());
-        } finally {
-            session.logout();
-        }
+    private static PrivilegeBits readBits(Node node, String name) throws RepositoryException {
+        return PrivilegeBits.getInstance(PropertyStates.createProperty(name, Arrays.asList(node.getProperty(name).getValues())));
     }
 
-    @Test
-    public void verifySNS() throws RepositoryException {
-        Set<String> nodeNames = Sets.newHashSet("sibling", "sibling[2]", "sibling[3]");
-        Session session = createAdminSession();
-        try {
-            Node sns = session.getNode("/sns");
-            NodeIterator ns = sns.getNodes();
-            int c = 0;
-            while (ns.hasNext()) {
-                Node node = ns.nextNode();
-                String name = node.getName();
-                assertTrue("Unexpected node: " + name, nodeNames.remove(name));
-            }
-            assertTrue("Missing nodes: " + nodeNames, nodeNames.isEmpty());
-        } finally {
-            session.logout();
-        }
+    private static long getLong(Node node) throws RepositoryException {
+        return node.getProperty(PrivilegeConstants.REP_BITS).getValues()[0].getLong();
     }
-
 }

Modified: jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java?rev=1655283&r1=1655282&r2=1655283&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java (original)
+++ jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/RepositoryUpgradeTest.java Wed Jan 28 12:40:53 2015
@@ -18,55 +18,12 @@
  */
 package org.apache.jackrabbit.oak.upgrade;
 
-import static com.google.common.collect.Sets.newHashSet;
-import static java.util.Arrays.asList;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.Assert.assertTrue;
-import static org.apache.jackrabbit.JcrConstants.JCR_FROZENMIXINTYPES;
-import static org.apache.jackrabbit.JcrConstants.JCR_FROZENPRIMARYTYPE;
-import static org.apache.jackrabbit.JcrConstants.JCR_FROZENUUID;
-import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
-import static org.apache.jackrabbit.JcrConstants.MIX_VERSIONABLE;
-import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_ADD_CHILD_NODES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_ALL;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_LIFECYCLE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_LOCK_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_MODIFY_ACCESS_CONTROL;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_MODIFY_PROPERTIES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NAMESPACE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NODE_TYPE_DEFINITION_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_NODE_TYPE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_READ;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_READ_ACCESS_CONTROL;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_REMOVE_CHILD_NODES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_REMOVE_NODE;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_RETENTION_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_VERSION_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_WORKSPACE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.JCR_WRITE;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_ADD_PROPERTIES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_ALTER_PROPERTIES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_INDEX_DEFINITION_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_PRIVILEGE_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_READ_NODES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_READ_PROPERTIES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_REMOVE_PROPERTIES;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_USER_MANAGEMENT;
-import static org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants.REP_WRITE;
-
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.math.BigDecimal;
-import java.util.Arrays;
 import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
 import java.util.Random;
 import java.util.Set;
-
 import javax.jcr.Binary;
 import javax.jcr.NamespaceRegistry;
 import javax.jcr.Node;
@@ -83,20 +40,27 @@ import javax.jcr.nodetype.NodeTypeManage
 import javax.jcr.nodetype.NodeTypeTemplate;
 import javax.jcr.nodetype.PropertyDefinition;
 import javax.jcr.nodetype.PropertyDefinitionTemplate;
-import javax.jcr.security.Privilege;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionHistory;
 import javax.jcr.version.VersionManager;
 
-import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.JackrabbitWorkspace;
-import org.apache.jackrabbit.api.security.authorization.PrivilegeManager;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
 import org.junit.Test;
 
+import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertNotNull;
+import static junit.framework.Assert.assertTrue;
+import static org.apache.jackrabbit.JcrConstants.JCR_FROZENMIXINTYPES;
+import static org.apache.jackrabbit.JcrConstants.JCR_FROZENPRIMARYTYPE;
+import static org.apache.jackrabbit.JcrConstants.JCR_FROZENUUID;
+import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
+import static org.apache.jackrabbit.JcrConstants.MIX_VERSIONABLE;
+import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
+
 public class RepositoryUpgradeTest extends AbstractRepositoryUpgradeTest {
 
     private static final Calendar DATE = Calendar.getInstance();
@@ -118,11 +82,6 @@ public class RepositoryUpgradeTest exten
             NamespaceRegistry registry = workspace.getNamespaceRegistry();
             registry.registerNamespace("test", "http://www.example.org/");
 
-            PrivilegeManager privilegeManager = workspace.getPrivilegeManager();
-            privilegeManager.registerPrivilege("test:privilege", false, null);
-            privilegeManager.registerPrivilege(
-                    "test:aggregate", false, new String[] { "jcr:read", "test:privilege" });
-
             NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager();
             NodeTypeTemplate template = nodeTypeManager.createNodeTypeTemplate();
             template.setName("test:unstructured");
@@ -218,108 +177,6 @@ public class RepositoryUpgradeTest exten
         } finally {
             session.logout();
         }
-    }
-
-    @Test
-    public void verifyPrivileges() throws RepositoryException {
-        Set<String> nonAggregatePrivileges = newHashSet(
-            REP_READ_NODES, REP_READ_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
-            REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES, JCR_REMOVE_NODE,
-            JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL, JCR_NODE_TYPE_MANAGEMENT,
-            JCR_VERSION_MANAGEMENT, JCR_LOCK_MANAGEMENT, JCR_LIFECYCLE_MANAGEMENT,
-            JCR_RETENTION_MANAGEMENT, JCR_WORKSPACE_MANAGEMENT, JCR_NODE_TYPE_DEFINITION_MANAGEMENT,
-            JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_USER_MANAGEMENT,
-            REP_INDEX_DEFINITION_MANAGEMENT);
-
-        Map<String, String[]> aggregatePrivileges = Maps.newHashMap();
-        aggregatePrivileges.put(JCR_READ,
-                new String[] {REP_READ_NODES, REP_READ_PROPERTIES});
-        aggregatePrivileges.put(JCR_MODIFY_PROPERTIES,
-                new String[] {REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES, REP_REMOVE_PROPERTIES});
-        aggregatePrivileges.put(JCR_WRITE,
-                new String[] {JCR_MODIFY_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
-                        REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES,
-                        JCR_REMOVE_NODE});
-        aggregatePrivileges.put(REP_WRITE,
-                new String[] {JCR_WRITE, JCR_MODIFY_PROPERTIES, REP_ADD_PROPERTIES,
-                        REP_ALTER_PROPERTIES, REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES,
-                        JCR_REMOVE_CHILD_NODES, JCR_REMOVE_NODE, JCR_NODE_TYPE_MANAGEMENT});
-        aggregatePrivileges.put(JCR_ALL,
-                new String[] {REP_READ_NODES, REP_READ_PROPERTIES, REP_ADD_PROPERTIES, REP_ALTER_PROPERTIES,
-                        REP_REMOVE_PROPERTIES, JCR_ADD_CHILD_NODES, JCR_REMOVE_CHILD_NODES, JCR_REMOVE_NODE,
-                        JCR_READ_ACCESS_CONTROL, JCR_MODIFY_ACCESS_CONTROL, JCR_NODE_TYPE_MANAGEMENT,
-                        JCR_VERSION_MANAGEMENT, JCR_LOCK_MANAGEMENT, JCR_LIFECYCLE_MANAGEMENT,
-                        JCR_RETENTION_MANAGEMENT, JCR_WORKSPACE_MANAGEMENT, JCR_NODE_TYPE_DEFINITION_MANAGEMENT,
-                        JCR_NAMESPACE_MANAGEMENT, REP_PRIVILEGE_MANAGEMENT, REP_USER_MANAGEMENT,
-                        REP_INDEX_DEFINITION_MANAGEMENT, JCR_READ, JCR_MODIFY_PROPERTIES, JCR_WRITE, REP_WRITE,
-                        "test:privilege", "test:aggregate"});
-
-        JackrabbitSession session = createAdminSession();
-        try {
-            JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
-            PrivilegeManager manager = workspace.getPrivilegeManager();
-            Privilege[] privileges = manager.getRegisteredPrivileges();
-
-            for (Privilege privilege : privileges) {
-                if (privilege.isAggregate()) {
-                    String[] expected = aggregatePrivileges.remove(privilege.getName());
-                    if (expected != null) {
-                        String[] actual = getNames(privilege.getAggregatePrivileges());
-                        assertTrue("Miss match in aggregate privilege " + privilege.getName() +
-                                " expected " + Arrays.toString(expected) +
-                                " actual " + Arrays.toString(actual),
-                            newHashSet(expected).equals(newHashSet(actual)));
-                    }
-                } else {
-                    nonAggregatePrivileges.remove(privilege.getName());
-                }
-            }
-
-            assertTrue("Missing non aggregate privileges: " + nonAggregatePrivileges,
-                    nonAggregatePrivileges.isEmpty());
-            assertTrue("Missing aggregate privileges: " + aggregatePrivileges.keySet(),
-                aggregatePrivileges.isEmpty());
-        }
-        finally {
-            session.logout();
-        }
-    }
-
-    private static String[] getNames(Privilege[] privileges) {
-        String[] names = new String[privileges.length];
-        for (int i = 0; i < privileges.length; i++) {
-            names[i] = privileges[i].getName();
-        }
-        return names;
-    }
-
-    @Test
-    public void verifyCustomPrivileges() throws Exception {
-        JackrabbitSession session = createAdminSession();
-        try {
-            JackrabbitWorkspace workspace =
-                    (JackrabbitWorkspace) session.getWorkspace();
-            PrivilegeManager manager = workspace.getPrivilegeManager();
-
-            Privilege privilege = manager.getPrivilege("test:privilege");
-            assertNotNull(privilege);
-            assertFalse(privilege.isAbstract());
-            assertFalse(privilege.isAggregate());
-            assertEquals(0, privilege.getDeclaredAggregatePrivileges().length);
-
-            Privilege aggregate = manager.getPrivilege("test:aggregate");
-            assertNotNull(aggregate);
-            assertFalse(aggregate.isAbstract());
-            assertTrue(aggregate.isAggregate());
-            assertEquals(2, aggregate.getDeclaredAggregatePrivileges().length);
-
-            Privilege jcrAll = manager.getPrivilege("jcr:all");
-            List<Privilege> privileges = asList(jcrAll.getAggregatePrivileges());
-            assertTrue(privileges.contains(privilege));
-            assertTrue(privileges.contains(aggregate));
-        } finally {
-            session.logout();
-        }
     }
 
     @Test