Author: mduerig
Date: Wed Dec 18 17:02:04 2013
New Revision: 1552023

URL: http://svn.apache.org/r1552023
Log:
OAK-710: PermissionValidator: Proper permission evaluation for moving/renaming 
nodes
More MoveTracker tests: ported the relevant cases from 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
 line 222 and forward.

Modified:
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/MoveTrackerTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/MoveTrackerTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/MoveTrackerTest.java?rev=1552023&r1=1552022&r2=1552023&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/MoveTrackerTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/spi/commit/MoveTrackerTest.java
 Wed Dec 18 17:02:04 2013
@@ -16,17 +16,18 @@
  */
 package org.apache.jackrabbit.oak.spi.commit;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import java.util.LinkedHashMap;
 import java.util.Map;
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.jackrabbit.oak.api.Tree;
+import org.junit.Ignore;
 import org.junit.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 /**
  * MoveTrackerTest... TODO
  */
@@ -37,6 +38,158 @@ public class MoveTrackerTest {
         assertTrue(new MoveTracker().isEmpty());
     }
 
+    /**
+     * 1.   >/a:/b >/c:/d     =  >/c:/d >/a:b
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 222
+     */
+    @Test
+    public void test1() {
+        MoveTracker mt = new MoveTracker();
+        mt.addMove("/a", "/b");
+        mt.addMove("/c", "/d");
+
+        assertEquals("/a", mt.getOriginalSourcePath("/b"));
+        assertEquals("/c", mt.getOriginalSourcePath("/d"));
+        assertEquals("/b", mt.getDestPath("/a"));
+        assertEquals("/d", mt.getDestPath("/c"));
+    }
+
+    /**
+     * 4.   >/a/b:/c >/a:/d   =  >/a:/d >/d/b:/c
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 225
+     */
+    @Test
+    public void test4() {
+        MoveTracker mt1 = new MoveTracker();
+        mt1.addMove("/a/b", "/c");
+        mt1.addMove("/a", "/d");
+
+        assertEquals("/a/b", mt1.getOriginalSourcePath("/c"));
+        assertEquals("/a", mt1.getOriginalSourcePath("/d"));
+        assertEquals("/c", mt1.getDestPath("/a/b"));
+        assertEquals("/d", mt1.getDestPath("/a"));
+    }
+
+    /**
+     * 4.   >/a/b:/c >/a:/c/d    does not commute  (q < s)
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 226
+     */
+    @Test
+    public void test4a() {
+        MoveTracker mt2 = new MoveTracker();
+        mt2.addMove("/a/b", "/c");
+        mt2.addMove("/a", "/c/d");
+
+        assertEquals("/a/b", mt2.getOriginalSourcePath("/c"));
+        assertEquals("/a", mt2.getOriginalSourcePath("/c/d"));
+        assertEquals("/c", mt2.getDestPath("/a/b"));
+        assertEquals("/c/d", mt2.getDestPath("/a"));
+    }
+
+    /**
+     * 7.   >/a:/b >/c:/a        does not commute
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 231
+     */
+    @Test
+    public void test7() {
+        MoveTracker mt3 = new MoveTracker();
+        mt3.addMove("/a", "/b");
+        mt3.addMove("/c", "/a");
+
+        assertEquals("/a", mt3.getOriginalSourcePath("/b"));
+        assertEquals("/c", mt3.getOriginalSourcePath("/a"));
+        assertEquals("/b", mt3.getDestPath("/a"));
+        assertEquals("/a", mt3.getDestPath("/c"));
+    }
+
+    /**
+     * 10.  >/a:/b >/b/c:/d   =  >/a/c:/d >/a:/b
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 234
+     */
+    @Test
+    public void test10() {
+        MoveTracker mt = new MoveTracker();
+        mt.addMove("/a", "/b");
+        mt.addMove("/b/c", "/d");
+
+        assertEquals("/a", mt.getOriginalSourcePath("/b"));
+        assertEquals("/a/c", mt.getOriginalSourcePath("/d"));
+        assertEquals("/b", mt.getDestPath("/a"));
+        assertEquals("/d", mt.getDestPath("/a/c"));
+    }
+
+    /**
+     * 11.  >/a:/b >/b:/c     =  >/a:/c
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 236
+     */
+    @Test
+    public void test11() {
+        MoveTracker mt = new MoveTracker();
+        mt.addMove("/a", "/b");
+        mt.addMove("/b", "/c");
+
+        assertEquals("/a", mt.getOriginalSourcePath("/c"));
+        assertEquals("/c", mt.getDestPath("/a"));
+    }
+
+    /**
+     * 12.  >/a:/b/c >/b:/d   =  >/b:/d >/a:/d/c
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 237
+     */
+    @Test
+    @Ignore("OAK-710")  // FIXME see OAK-710
+    public void test12() {
+        MoveTracker mt4 = new MoveTracker();
+        mt4.addMove("/a", "/b/c");
+        mt4.addMove("/b", "/d");
+
+        assertEquals("/a", mt4.getOriginalSourcePath("/d/c"));
+        assertEquals("/b", mt4.getOriginalSourcePath("/d"));
+        assertEquals("/d/c", mt4.getDestPath("/a"));
+        assertEquals("/d", mt4.getDestPath("/b"));
+    }
+
+    /**
+     * 14.  >/a:/b >/c:/b/d   =  >/c:/a/d >/a:/b
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 240
+     */
+    @Test
+    public void test14() {
+        MoveTracker mt5 = new MoveTracker();
+        mt5.addMove("/a", "/b");
+        mt5.addMove("/c", "/b/d");
+
+        assertEquals("/a", mt5.getOriginalSourcePath("/b"));
+        assertEquals("/c", mt5.getOriginalSourcePath("/b/d"));
+        assertEquals("/b", mt5.getDestPath("/a"));
+        assertEquals("/b/d", mt5.getDestPath("/c"));
+    }
+
+    /**
+     * 14.  >/a/b:/b >/a:/b/d    does not commute  (p > r)
+     * See 
http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeLog.java?view=markup
+     * Line 241
+     */
+    @Test
+    public void test14a() {
+        MoveTracker mt6 = new MoveTracker();
+        mt6.addMove("/a/b", "/b");
+        mt6.addMove("/a", "/b/d");
+
+        assertEquals("/a/b", mt6.getOriginalSourcePath("/b"));
+        assertEquals("/a", mt6.getOriginalSourcePath("/b/d"));
+        assertEquals("/b", mt6.getDestPath("/a/b"));
+        assertEquals("/b/d", mt6.getDestPath("/a"));
+    }
+
     @Test
     public void testNotEmpty() {
         for (Tree.Status st : Tree.Status.values()) {


Reply via email to