From 112be18635ca7c3a63255d259dd0481d6d2e3ead Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Thu, 28 Oct 2021 16:55:27 +0200 Subject: [PATCH] read capabilities for bulk upload from server use it in dedicated tests Signed-off-by: Matthieu Gallien --- src/libsync/capabilities.cpp | 5 +++++ src/libsync/capabilities.h | 1 + src/libsync/owncloudpropagator.cpp | 2 +- test/testcapabilities.cpp | 14 ++++++++++++++ test/testsyncengine.cpp | 2 ++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp index cfffa403a..a917c20e5 100644 --- a/src/libsync/capabilities.cpp +++ b/src/libsync/capabilities.cpp @@ -216,6 +216,11 @@ bool Capabilities::chunkingNg() const return _capabilities["dav"].toMap()["chunking"].toByteArray() >= "1.0"; } +bool Capabilities::bulkUpload() const +{ + return _capabilities["dav"].toMap()["bulkupload"].toByteArray() >= "1.0"; +} + bool Capabilities::userStatus() const { if (!_capabilities.contains("user_status")) { diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h index f91208d90..dddda5f5c 100644 --- a/src/libsync/capabilities.h +++ b/src/libsync/capabilities.h @@ -63,6 +63,7 @@ public: bool shareResharing() const; int shareDefaultPermissions() const; bool chunkingNg() const; + bool bulkUpload() const; bool userStatus() const; bool userStatusSupportsEmoji() const; diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index 9a4ceae54..b36365780 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -861,7 +861,7 @@ Result OwncloudPropagator::staticUpdat bool OwncloudPropagator::isDelayedUploadItem(const SyncFileItemPtr &item) const { - return !_scheduleDelayedTasks && !item->_isEncrypted; + return account()->capabilities().bulkUpload() && !_scheduleDelayedTasks && !item->_isEncrypted && _syncOptions._minChunkSize > item->_size; } void OwncloudPropagator::setScheduleDelayedTasks(bool active) diff --git a/test/testcapabilities.cpp b/test/testcapabilities.cpp index 1c8e9bac2..2088cc7b0 100644 --- a/test/testcapabilities.cpp +++ b/test/testcapabilities.cpp @@ -243,6 +243,20 @@ private slots: QCOMPARE(defaultSharePermissionsAvailable, 31); } + + void testBulkUploadAvailable_bulkUploadAvailable_returnTrue() + { + QVariantMap bulkuploadMap; + bulkuploadMap["bulkupload"] = "1.0"; + + QVariantMap capabilitiesMap; + capabilitiesMap["dav"] = bulkuploadMap; + + const auto &capabilities = OCC::Capabilities(capabilitiesMap); + const auto bulkuploadAvailable = capabilities.bulkUpload(); + + QCOMPARE(bulkuploadAvailable, true); + } }; QTEST_GUILESS_MAIN(TestCapabilities) diff --git a/test/testsyncengine.cpp b/test/testsyncengine.cpp index 7e1fc36c4..e17e7ac31 100644 --- a/test/testsyncengine.cpp +++ b/test/testsyncengine.cpp @@ -92,6 +92,8 @@ private slots: void testDirUploadWithDelayedAlgorithm() { FakeFolder fakeFolder{FileInfo::A12_B12_C12_S12()}; + fakeFolder.syncEngine().account()->setCapabilities({ { "dav", QVariantMap{ {"bulkupload", "1.0"} } } }); + ItemCompletedSpy completeSpy(fakeFolder); fakeFolder.localModifier().mkdir("Y"); fakeFolder.localModifier().insert("Y/d0"); -- 2.30.2