Author: mreutegg
Date: Tue Mar  1 09:22:50 2016
New Revision: 1733013

URL: http://svn.apache.org/viewvc?rev=1733013&view=rev
Log:
OAK-4077: Reregister node type may not update definition correctly

Add ignored test

Modified:
    
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeTest.java

Modified: 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeTest.java?rev=1733013&r1=1733012&r2=1733013&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeTest.java
 Tue Mar  1 09:22:50 2016
@@ -18,8 +18,10 @@
  */
 package org.apache.jackrabbit.oak.jcr.nodetype;
 
+import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.fail;
 
+import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -35,8 +37,10 @@ import javax.jcr.nodetype.NodeTypeTempla
 import javax.jcr.nodetype.PropertyDefinitionTemplate;
 
 import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.commons.cnd.CndImporter;
 import org.apache.jackrabbit.oak.fixture.NodeStoreFixture;
 import org.apache.jackrabbit.oak.jcr.AbstractRepositoryTest;
+import org.junit.Ignore;
 import org.junit.Test;
 
 public class NodeTypeTest extends AbstractRepositoryTest {
@@ -239,4 +243,44 @@ public class NodeTypeTest extends Abstra
         c.addMixin(JcrConstants.MIX_REFERENCEABLE);
         session.save();
     }
+
+    @Ignore("OAK-4077")
+    @Test
+    public void removeMandatoryProperty() throws Exception {
+        Session session = getAdminSession();
+        Node root = session.getRootNode();
+        NodeTypeManager manager = session.getWorkspace().getNodeTypeManager();
+
+        String cnd = "<'test'='http://www.apache.org/jackrabbit/test'>\n" +
+                "[test:MyType] > nt:unstructured\n" +
+                " - test:mandatory (string) mandatory";
+
+        CndImporter.registerNodeTypes(new StringReader(cnd), session);
+
+        Node n = root.addNode("test", "test:MyType");
+        n.setProperty("test:mandatory", "value");
+        session.save();
+
+        try {
+            n.getProperty("test:mandatory").remove();
+            session.save();
+            fail("Must fail with ConstraintViolationException");
+        } catch (ConstraintViolationException e) {
+            // expected
+            session.refresh(false);
+        }
+
+        // remove the mandatory property
+        cnd = "<'test'='http://www.apache.org/jackrabbit/test'>\n" +
+                "[test:MyType] > nt:unstructured";
+        CndImporter.registerNodeTypes(new StringReader(cnd), session, true);
+
+        // check node type
+        NodeTypeDefinition ntd = manager.getNodeType("test:MyType");
+        assertEquals(0, ntd.getDeclaredPropertyDefinitions().length);
+
+        // now we should be able to remove the property
+        n.getProperty("test:mandatory").remove();
+        session.save();
+    }
 }


Reply via email to