From 4afc033ee0493a4d4d0772fcc3f35a6716f4399d Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Wed, 5 Jun 2024 20:31:41 +0200 Subject: [PATCH] Add test to detect file renames in external storage. Signed-off-by: Camila Ayres --- test/testsyncmove.cpp | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/test/testsyncmove.cpp b/test/testsyncmove.cpp index 6a99af7c77..9c5ca18559 100644 --- a/test/testsyncmove.cpp +++ b/test/testsyncmove.cpp @@ -320,6 +320,49 @@ private slots: QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(remoteInfo)); } + void testLocalExternalStorageRenameDetection() + { + FakeFolder fakeFolder { FileInfo { QString(), { FileInfo { QStringLiteral("external") } } }}; + + int nPUT = 0; + int nDELETE = 0; + fakeFolder.setServerOverride([&](QNetworkAccessManager::Operation op, const QNetworkRequest &, QIODevice *) { + if (op == QNetworkAccessManager::PutOperation) { + ++nPUT; + } + + if (op == QNetworkAccessManager::DeleteOperation) { + ++nDELETE; + } + return nullptr; + }); + + fakeFolder.remoteModifier().permissions.setPermission(OCC::RemotePermissions::IsMounted); + fakeFolder.remoteModifier().permissions.setPermission(OCC::RemotePermissions::CanMove); + fakeFolder.remoteModifier().permissions.setPermission(OCC::RemotePermissions::CanWrite); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.remoteModifier()); + + fakeFolder.localModifier().insert("external/file", 100); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.remoteModifier())); + QCOMPARE(nPUT, 1); + + fakeFolder.localModifier().rename("external/file", "external/file2"); + fakeFolder.localModifier().rename("external/file2", "external/file3"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + QCOMPARE(printDbData(fakeFolder.dbState()), printDbData(fakeFolder.remoteModifier())); + QCOMPARE(fakeFolder.remoteModifier().children.size(), 1); + + QCOMPARE(fakeFolder.remoteModifier().children.size(), 1); + QCOMPARE(fakeFolder.remoteModifier().children.value("external").children.size(), 1); + QCOMPARE(fakeFolder.remoteModifier().children.value("external").children.value("file3").name, QStringLiteral("file3")); + QCOMPARE(nPUT, 1); + QCOMPARE(nDELETE, 0); + } + void testDuplicateFileId_data() { QTest::addColumn("prefix");