]> dgit.raspbian.org Git - nextcloud-desktop.git/commitdiff
add a new automated test for virtual files and data restoration
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Mon, 6 Mar 2023 15:27:57 +0000 (16:27 +0100)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Wed, 8 Mar 2023 08:45:09 +0000 (09:45 +0100)
add a test that will try to upload pure virtual files becase restoration
after server data fingerprint has changed

this is illegal and should not happen

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
test/testsyncvirtualfiles.cpp

index 1dd091dbda85be6a4ebde6ebdf1c7caf1390a702..a4ce8c8c66ce6f01fe5aa1c5cb3aa62a22369bdf 100644 (file)
@@ -1880,6 +1880,32 @@ private slots:
         conflicts = findCaseClashConflicts(*fakeFolder.currentLocalState().find("a/b"));
         QCOMPARE(conflicts.size(), shouldHaveCaseClashConflict ? 1 : 0);
     }
+
+    void testDataFingerPrint()
+    {
+        FakeFolder fakeFolder{ FileInfo{} };
+        setupVfs(fakeFolder);
+
+        fakeFolder.remoteModifier().mkdir("a");
+        fakeFolder.remoteModifier().mkdir("a/b");
+        fakeFolder.remoteModifier().mkdir("a/b/d");
+        fakeFolder.remoteModifier().insert("a/b/otherFile.txt");
+
+        //Server support finger print, but none is set.
+        fakeFolder.remoteModifier().extraDavProperties = "<oc:data-fingerprint></oc:data-fingerprint>";
+
+        fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::DatabaseAndFilesystem);
+        QVERIFY(fakeFolder.syncOnce());
+
+        fakeFolder.remoteModifier().remove("a/b/otherFile.txt");
+        fakeFolder.remoteModifier().remove("a/b/d");
+        fakeFolder.remoteModifier().extraDavProperties = "<oc:data-fingerprint>initial_finger_print</oc:data-fingerprint>";
+
+        fakeFolder.syncEngine().setLocalDiscoveryOptions(OCC::LocalDiscoveryStyle::DatabaseAndFilesystem);
+        QVERIFY(fakeFolder.syncOnce());
+
+        QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState());
+    }
 };
 
 QTEST_GUILESS_MAIN(TestSyncVirtualFiles)