detect capabilities for lock/unlock of files
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 7 Apr 2022 08:44:54 +0000 (10:44 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Mon, 2 May 2022 11:52:05 +0000 (13:52 +0200)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/capabilities.cpp
src/libsync/capabilities.h
test/testcapabilities.cpp

index 155048a76ea692ca3c462e3bfd405f4e16e29a85..da713b46cfe48c9401546950065a203a83bf1bab 100644 (file)
@@ -221,6 +221,11 @@ bool Capabilities::bulkUpload() const
     return _capabilities["dav"].toMap()["bulkupload"].toByteArray() >= "1.0";
 }
 
+bool Capabilities::filesLockAvailable() const
+{
+    return _capabilities["files"].toMap()["locking"].toByteArray() >= "1.0";
+}
+
 bool Capabilities::userStatus() const
 {
     if (!_capabilities.contains("user_status")) {
index 6bbb3e022080303aa7ae6e9c6cb45ef07da38177..bbc2fd1b60a85bd3247b51aa5e33f86570666b33 100644 (file)
@@ -65,6 +65,7 @@ public:
     int shareDefaultPermissions() const;
     bool chunkingNg() const;
     bool bulkUpload() const;
+    bool filesLockAvailable() const;
     bool userStatus() const;
     bool userStatusSupportsEmoji() const;
     QColor serverColor() const;
index 2088cc7b0b02bfda30d5c07d9de20e93d8169c8e..1952d7f3661e5ac14752e5b7745eecb59d16b350 100644 (file)
@@ -257,6 +257,20 @@ private slots:
 
         QCOMPARE(bulkuploadAvailable, true);
     }
+
+    void testFilesLockAvailable_filesLockAvailable_returnTrue()
+    {
+        QVariantMap filesMap;
+        filesMap["locking"] = "1.0";
+
+        QVariantMap capabilitiesMap;
+        capabilitiesMap["files"] = filesMap;
+
+        const auto &capabilities = OCC::Capabilities(capabilitiesMap);
+        const auto filesLockAvailable = capabilities.filesLockAvailable();
+
+        QCOMPARE(filesLockAvailable, true);
+    }
 };
 
 QTEST_GUILESS_MAIN(TestCapabilities)