automated test: allow rename of the child items of a mount point
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Tue, 25 Jun 2024 08:33:22 +0000 (10:33 +0200)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Tue, 25 Jun 2024 13:37:54 +0000 (15:37 +0200)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
test/testsyncmove.cpp

index 25cd674dd9988866510b20f9cc333143b768ef4a..47d3e955af780d8eabb976307776b00a18475f96 100644 (file)
@@ -1174,6 +1174,44 @@ private slots:
         QCOMPARE(counter.nMOVE, 0);
         QCOMPARE(counter.nMKCOL, 5);
     }
+
+    void testAllowRenameChildFolderFromGroupFolder()
+    {
+        FakeFolder fakeFolder{{}};
+        fakeFolder.syncEngine().account()->setServerVersion("29.0.2.0");
+
+        fakeFolder.remoteModifier().mkdir("FolA");
+        auto groupFolderRoot = fakeFolder.remoteModifier().find("FolA");
+        groupFolderRoot->extraDavProperties = "<nc:is-mount-root>true</nc:is-mount-root>";
+        setAllPerm(groupFolderRoot, RemotePermissions::fromServerString("WDNVCKRM"));
+        fakeFolder.remoteModifier().mkdir("FolA/FolB");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB/FolC");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB/FolC/FolD");
+        fakeFolder.remoteModifier().mkdir("FolA/FolB/FolC/FolD/FolE");
+        fakeFolder.remoteModifier().insert("FolA/FileA.txt");
+        fakeFolder.remoteModifier().insert("FolA/FolB/FileB.txt");
+        fakeFolder.remoteModifier().insert("FolA/FolB/FolC/FileC.txt");
+        fakeFolder.remoteModifier().insert("FolA/FolB/FolC/FolD/FileD.txt");
+        fakeFolder.remoteModifier().insert("FolA/FolB/FolC/FolD/FolE/FileE.txt");
+        QVERIFY(fakeFolder.syncOnce());
+
+        OperationCounter counter;
+        fakeFolder.setServerOverride(counter.functor());
+
+        fakeFolder.localModifier().insert("FolA/FileA2.txt");
+        fakeFolder.localModifier().insert("FolA/FolB/FileB2.txt");
+        fakeFolder.localModifier().insert("FolA/FolB/FolC/FileC2.txt");
+        fakeFolder.localModifier().insert("FolA/FolB/FolC/FolD/FileD2.txt");
+        fakeFolder.localModifier().insert("FolA/FolB/FolC/FolD/FolE/FileE2.txt");
+        fakeFolder.localModifier().rename("FolA/FolB", "FolA/FolB_Renamed");
+        fakeFolder.localModifier().rename("FolA/FileA.txt", "FolA/FileA_Renamed.txt");
+        QVERIFY(fakeFolder.syncOnce());
+        QCOMPARE(counter.nDELETE, 0);
+        QCOMPARE(counter.nGET, 0);
+        QCOMPARE(counter.nPUT, 5);
+        QCOMPARE(counter.nMOVE, 2);
+        QCOMPARE(counter.nMKCOL, 0);
+    }
 };
 
 QTEST_GUILESS_MAIN(TestSyncMove)