From 071ab937afe92738e09df8f4b0bfbebce12314b3 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Mon, 5 Aug 2024 18:03:21 +0800 Subject: [PATCH] Add test for new forbidden filename capabilities Signed-off-by: Claudio Cambra --- test/testlocaldiscovery.cpp | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/testlocaldiscovery.cpp b/test/testlocaldiscovery.cpp index a3dc0d64d..7f5f4f085 100644 --- a/test/testlocaldiscovery.cpp +++ b/test/testlocaldiscovery.cpp @@ -294,6 +294,45 @@ private slots: QVERIFY(!fakeFolder.currentRemoteState().find("C/bar")); } + // Tests the behavior of forbidden filename detection + void testServerForbiddenFilenames() + { + FakeFolder fakeFolder { FileInfo::A12_B12_C12_S12() }; + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + fakeFolder.syncEngine().account()->setCapabilities({ + { "files", QVariantMap { + { "forbidden_filenames", QVariantList { ".foo", "bar" } }, + { "forbidden_filename_characters", QVariantList { "\n" } }, + { "forbidden_filename_basenames", QVariantList { "base" } }, + { "forbidden_filename_extensions", QVariantList { "ext" } } + } } + }); + + fakeFolder.localModifier().insert("C/.foo"); + fakeFolder.localModifier().insert("C/bar"); + fakeFolder.localModifier().insert("C/moo"); + fakeFolder.localModifier().insert("C/.moo"); + fakeFolder.localModifier().insert("C/potatopotato.txt"); + fakeFolder.localModifier().insert("C/potato\npotato.txt"); + fakeFolder.localModifier().insert("C/basefilename.txt"); + fakeFolder.localModifier().insert("C/base.txt"); + fakeFolder.localModifier().insert("C/filename.txt"); + fakeFolder.localModifier().insert("C/filename.ext"); + + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(fakeFolder.currentRemoteState().find("C/moo")); + QVERIFY(fakeFolder.currentRemoteState().find("C/.moo")); + QVERIFY(!fakeFolder.currentRemoteState().find("C/.foo")); + QVERIFY(!fakeFolder.currentRemoteState().find("C/bar")); + QVERIFY(fakeFolder.currentRemoteState().find("C/potatopotato.txt")); + QVERIFY(!fakeFolder.currentRemoteState().find("C/potato\npotato.txt")); + QVERIFY(fakeFolder.currentRemoteState().find("C/basefilename.txt")); + QVERIFY(!fakeFolder.currentRemoteState().find("C/base.txt")); + QVERIFY(fakeFolder.currentRemoteState().find("C/filename.txt")); + QVERIFY(!fakeFolder.currentRemoteState().find("C/filename.ext")); + } + void testCreateFileWithTrailingSpaces_localAndRemoteTrimmedDoNotExist_renameAndUploadFile() { FakeFolder fakeFolder{FileInfo{}}; -- 2.30.2