diff options
author | Christian Kamm <mail@ckamm.de> | 2017-10-13 15:56:40 +0300 |
---|---|---|
committer | Markus Goetz <markus@woboq.com> | 2017-10-17 18:15:49 +0300 |
commit | bf393439206c3294227a365153efd97bad91d7f6 (patch) | |
tree | b4bb3001fd8d7a7b4a69d561ad90e682970022de /test/testsyncengine.cpp | |
parent | af24b4132d131886e65ebb12a480f73b87902f42 (diff) |
Sync: Add capability for invalid filename regexes #6092
Diffstat (limited to 'test/testsyncengine.cpp')
-rw-r--r-- | test/testsyncengine.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index b925c83cc..591ca653f 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -667,6 +667,36 @@ private slots: fakeFolder.remoteModifier().create("A/a6", 16, 'A'); QVERIFY(!fakeFolder.syncOnce()); } + + // Tests the behavior of invalid filename detection + void testInvalidFilenameRegex() + { + FakeFolder fakeFolder{ FileInfo::A12_B12_C12_S12() }; + + // For current servers, no characters are forbidden + fakeFolder.syncEngine().account()->setServerVersion("10.0.0"); + fakeFolder.localModifier().insert("A/\\:?*\"<>|.txt"); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // For legacy servers, some characters were forbidden by the client + fakeFolder.syncEngine().account()->setServerVersion("8.0.0"); + fakeFolder.localModifier().insert("B/\\:?*\"<>|.txt"); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(!fakeFolder.currentRemoteState().find("B/\\:?*\"<>|.txt")); + + // We can override that by setting the capability + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ { "invalidFilenameRegex", "" } } } }); + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(fakeFolder.currentLocalState(), fakeFolder.currentRemoteState()); + + // Check that new servers also accept the capability + fakeFolder.syncEngine().account()->setServerVersion("10.0.0"); + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ { "invalidFilenameRegex", "my[fgh]ile" } } } }); + fakeFolder.localModifier().insert("C/myfile.txt"); + QVERIFY(fakeFolder.syncOnce()); + QVERIFY(!fakeFolder.currentRemoteState().find("C/myfile.txt")); + } }; QTEST_GUILESS_MAIN(TestSyncEngine) |