Browse Source

read capabilities for bulk upload from server

use it in dedicated tests

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
Matthieu Gallien 4 years ago
parent
commit
112be18635

+ 5 - 0
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")) {

+ 1 - 0
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;
 

+ 1 - 1
src/libsync/owncloudpropagator.cpp

@@ -861,7 +861,7 @@ Result<Vfs::ConvertToPlaceholderResult, QString> 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)

+ 14 - 0
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)

+ 2 - 0
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");