Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kamm <mail@ckamm.de>2017-10-13 15:56:40 +0300
committerMarkus Goetz <markus@woboq.com>2017-10-17 18:15:49 +0300
commitbf393439206c3294227a365153efd97bad91d7f6 (patch)
treeb4bb3001fd8d7a7b4a69d561ad90e682970022de /test/testsyncengine.cpp
parentaf24b4132d131886e65ebb12a480f73b87902f42 (diff)
Sync: Add capability for invalid filename regexes #6092
Diffstat (limited to 'test/testsyncengine.cpp')
-rw-r--r--test/testsyncengine.cpp30
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)