From 3c637faf32767f4179d3d40035b081e9d140c8fd Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Fri, 9 Sep 2022 16:14:52 +0200 Subject: tests: HttpUploadManager: Add test for future based API --- .../tst_qxmpphttpuploadmanager.cpp | 66 ++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp b/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp index f0f7e9e7..e8db6a74 100644 --- a/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp +++ b/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp @@ -55,6 +55,8 @@ private: Q_SLOT void testSending_data(); Q_SLOT void testSending(); + Q_SLOT void testSendingFuture_data(); + Q_SLOT void testSendingFuture(); Q_SLOT void testUploadService(); }; @@ -274,6 +276,70 @@ void tst_QXmppHttpUploadManager::testSending() QVERIFY(returnId.isNull()); } +void tst_QXmppHttpUploadManager::testSendingFuture_data() +{ + testSending_data(); +} + +void tst_QXmppHttpUploadManager::testSendingFuture() +{ + QFETCH(QFileInfo, fileInfo); + QFETCH(QString, fileName); + QFETCH(qint64, fileSize); + QFETCH(QString, fileType); + + auto expectedMimeType = QMimeDatabase().mimeTypeForName(fileType); + + TestClient test; + test.addNewExtension(); + auto *manager = test.addNewExtension(); + + addUploadService(test); + + auto future = [=]() { + if (!fileInfo.baseName().isEmpty()) { + return manager->requestSlot(fileInfo); + } else { + return manager->requestSlot(fileName, fileSize, expectedMimeType); + } + }(); + + QVERIFY(!future.isFinished()); + + // check sent packet + QXmppHttpUploadRequestIq iq; + parsePacket(iq, test.takePacket().toUtf8()); + + QCOMPARE(iq.type(), QXmppIq::Get); + QCOMPARE(iq.to(), UPLOAD_SERVICE_NAME); + QCOMPARE(iq.fileName(), fileName); + QCOMPARE(iq.size(), fileSize); + QCOMPARE(iq.contentType(), expectedMimeType); + + // inject reply + QByteArray reply = + "" + "" + "" + "
Basic Base64String==
" + "
application/json
" + "
foo=bar; user=romeo
" + "
" + "" + "
" + "
"; + test.inject(reply); + auto slot = expectFutureVariant(future); + + QCOMPARE(slot.getUrl(), QUrl("https://download.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/tr%C3%A8s%20cool.jpg")); + QCOMPARE(slot.putUrl(), QUrl("https://upload.montague.tld/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/tr%C3%A8s%20cool.jpg")); + // checks that the disallowed 'Content-type' header is not set + QCOMPARE(slot.putHeaders().size(), 2); + QCOMPARE(slot.putHeaders().keys()[0], QStringLiteral("Authorization")); + QCOMPARE(slot.putHeaders().keys()[1], QStringLiteral("Cookie")); +} + void tst_QXmppHttpUploadManager::testUploadService() { QXmppUploadService service; -- cgit v1.2.3