From 8d58da2314e37c60e14ed7452aea4a587395d3d5 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Thu, 8 Sep 2022 17:21:39 +0200 Subject: tests: HttpUploadManager: Modernize and refactor --- .../tst_qxmpphttpuploadmanager.cpp | 115 ++++++++++----------- 1 file changed, 54 insertions(+), 61 deletions(-) (limited to 'tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp') diff --git a/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp b/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp index 5ca016ab..f0f7e9e7 100644 --- a/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp +++ b/tests/qxmpphttpuploadmanager/tst_qxmpphttpuploadmanager.cpp @@ -6,23 +6,47 @@ #include "QXmppClient.h" #include "QXmppDiscoveryManager.h" #include "QXmppHttpUploadIq.h" -#include "QXmppLogger.h" #include "QXmppUploadRequestManager.h" #include "TestClient.h" #include "util.h" #include +static const auto UPLOAD_SERVICE_NAME = QStringLiteral("upload.montague.tld"); +constexpr quint64 MAX_FILE_SIZE = 500UL * 1024UL * 1024UL; + +static void addUploadService(QXmppClient &client) +{ + QVERIFY(client.findExtension()); + QVERIFY(client.findExtension()); + + QByteArray xml = + "" + "" + "" + "" + "" + "" + "urn:xmpp:http:upload:0" + "" + "" + "" + + QByteArray::number(MAX_FILE_SIZE) + + "" + "" + "" + "" + ""; + auto *discovery = client.findExtension(); + QVERIFY(discovery->handleStanza(xmlToDom(xml))); +} + class tst_QXmppHttpUploadManager : public QObject { Q_OBJECT - -protected: - Q_SLOT void onLoggerMessage(QXmppLogger::MessageType type, const QString &text) const; - private: - Q_SLOT void initTestCase(); - Q_SLOT void testDiscoveryService_data(); Q_SLOT void testDiscoveryService(); @@ -33,46 +57,8 @@ private: Q_SLOT void testSending(); Q_SLOT void testUploadService(); - -private: - QXmppUploadRequestManager *manager; - QXmppClient client; - QXmppDiscoveryManager *discovery; - QString uploadServiceName; - qint64 maxFileSize; - - QMimeType lastMimeType; - QString lastFileName; - qint64 lastFileSize; }; -void tst_QXmppHttpUploadManager::onLoggerMessage(QXmppLogger::MessageType type, const QString &text) const -{ - QCOMPARE(type, QXmppLogger::SentMessage); - - QDomDocument doc; - QVERIFY(doc.setContent(text, true)); - QDomElement element = doc.documentElement(); - - QXmppHttpUploadRequestIq iq; - iq.parse(element); - - QCOMPARE(iq.type(), QXmppIq::Get); - QCOMPARE(iq.to(), uploadServiceName); - QCOMPARE(iq.fileName(), lastFileName); - QCOMPARE(iq.size(), lastFileSize); - QCOMPARE(iq.contentType(), lastMimeType); -} - -void tst_QXmppHttpUploadManager::initTestCase() -{ - uploadServiceName = "upload.montague.tld"; - maxFileSize = 500UL * 1024UL * 1024UL; - manager = new QXmppUploadRequestManager(); - discovery = client.findExtension(); - client.addExtension(manager); -} - void tst_QXmppHttpUploadManager::testHandleStanza_data() { QTest::addColumn("xml"); @@ -183,7 +169,7 @@ void tst_QXmppHttpUploadManager::testDiscoveryService_data() QTest::newRow("HTTPUploadDiscoveryStanzaIq") << "" "" "" @@ -194,7 +180,7 @@ void tst_QXmppHttpUploadManager::testDiscoveryService_data() "" "" "" + - QByteArray::number(maxFileSize) + + QByteArray::number(MAX_FILE_SIZE) + "" "" "" @@ -208,17 +194,17 @@ void tst_QXmppHttpUploadManager::testDiscoveryService() QFETCH(QByteArray, xml); QFETCH(bool, discovered); - QDomDocument doc; - QVERIFY(doc.setContent(xml, true)); - QDomElement element = doc.documentElement(); + TestClient test; + auto *discovery = test.addNewExtension(); + auto *manager = test.addNewExtension(); - bool accepted = discovery->handleStanza(element); + bool accepted = discovery->handleStanza(xmlToDom(xml)); QCOMPARE(accepted, true); QCOMPARE(manager->serviceFound(), discovered); if (manager->serviceFound()) { - QCOMPARE(manager->uploadServices().at(0).jid(), uploadServiceName); - QCOMPARE(manager->uploadServices().at(0).sizeLimit(), maxFileSize); + QCOMPARE(manager->uploadServices().at(0).jid(), UPLOAD_SERVICE_NAME); + QCOMPARE(manager->uploadServices().at(0).sizeLimit(), MAX_FILE_SIZE); } } @@ -260,23 +246,30 @@ void tst_QXmppHttpUploadManager::testSending() QFETCH(qint64, fileSize); QFETCH(QString, fileType); - QXmppLogger logger; - logger.setLoggingType(QXmppLogger::SignalLogging); - client.setLogger(&logger); + auto expectedMimeType = QMimeDatabase().mimeTypeForName(fileType); - lastMimeType = QMimeDatabase().mimeTypeForName(fileType); - connect(&logger, &QXmppLogger::message, this, &tst_QXmppHttpUploadManager::onLoggerMessage); + TestClient test; + test.addNewExtension(); + auto *manager = test.addNewExtension(); - lastFileName = fileName; - lastFileSize = fileSize; + addUploadService(test); QString returnId; if (!fileInfo.baseName().isEmpty()) { returnId = manager->requestUploadSlot(fileInfo); } else { - returnId = manager->requestUploadSlot(fileName, fileSize, lastMimeType); + returnId = manager->requestUploadSlot(fileName, fileSize, expectedMimeType); } + 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); + // The client is not connected, so we never get an ID back (the packet was not sent). QVERIFY(returnId.isNull()); } -- cgit v1.2.3