Add test testFolderMetadataWithEmptySignatureDecryptFails.
authorCamila Ayres <hello@camilasan.com>
Tue, 16 Jul 2024 18:29:07 +0000 (20:29 +0200)
committerCamila Ayres <hello@camilasan.com>
Wed, 16 Oct 2024 09:51:01 +0000 (11:51 +0200)
Signed-off-by: Camila Ayres <hello@camilasan.com>
test/testclientsideencryptionv2.cpp

index 443adad94a687a34792f105e7693e2c3bce763bb..9b2304d0251b623152292d0e949472d88d7a6e98 100644 (file)
@@ -192,6 +192,41 @@ private slots:
         QVERIFY(metadataFromJson->isValid());
     }
 
+    void testFolderMetadataWithEmptySignatureDecryptFails()
+    {
+        QScopedPointer<FolderMetadata> metadata(new FolderMetadata(_account, "/", FolderMetadata::FolderType::Root));
+        QSignalSpy metadataSetupCompleteSpy(metadata.data(), &FolderMetadata::setupComplete);
+        metadataSetupCompleteSpy.wait();
+        QCOMPARE(metadataSetupCompleteSpy.count(), 1);
+        QVERIFY(metadata->isValid());
+
+        const auto encryptedMetadata = metadata->encryptedMetadata();
+        QVERIFY(!encryptedMetadata.isEmpty());
+
+        const auto signature = metadata->metadataSignature();
+        QVERIFY(!signature.isEmpty());
+
+        auto encryptedMetadataCopy = encryptedMetadata;
+        encryptedMetadataCopy.replace("\"", "\\\"");
+
+        const QJsonDocument ocsDoc = QJsonDocument::fromJson(QStringLiteral("{\"ocs\": {\"data\": {\"meta-data\": \"%1\"}}}")
+                                                           .arg(QString::fromUtf8(encryptedMetadataCopy)).toUtf8());
+
+        const QByteArray emptySignature = {};
+        QScopedPointer<FolderMetadata> metadataFromJson(new FolderMetadata(_account, "/",
+                                                                           ocsDoc.toJson(),
+                                                                           RootEncryptedFolderInfo::makeDefault(),
+                                                                           emptySignature));
+
+        QSignalSpy metadataSetupExistingCompleteSpy(metadataFromJson.data(), &FolderMetadata::setupComplete);
+        metadataSetupExistingCompleteSpy.wait();
+        QCOMPARE(metadataSetupExistingCompleteSpy.count(), 1);
+
+        QVERIFY(metadataFromJson->metadataSignature().isEmpty());
+        QVERIFY(metadataFromJson->metadataKeyForDecryption().isEmpty());
+        QVERIFY(!metadataFromJson->isValid());
+    }
+
     void testE2EeFolderMetadataSharing()
     {
         // instantiate empty metadata, add a file, and share with a second user "sharee"