From 7d128f179487a68ba975275996b8efadbd143721 Mon Sep 17 00:00:00 2001 From: Blue Date: Fri, 27 Mar 2020 15:17:42 +0300 Subject: QXmppMessageReceiptManager: Fix receipts are sent on error messages (#269) This fixes that behaviour and extends the tests for QXmppMessageReceiptManager. --- .../tst_qxmppmessagereceiptmanager.cpp | 85 +++++++++++++++++++++- 1 file changed, 82 insertions(+), 3 deletions(-) (limited to 'tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp') diff --git a/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp b/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp index 750628dc..0aff489c 100644 --- a/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp +++ b/tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp @@ -41,15 +41,32 @@ private slots: { m_messageDelivered = true; } + void onLoggerMessage(QXmppLogger::MessageType type, const QString& text) + { + m_receiptSent = true; + } private: - QXmppMessageReceiptManager m_manager; + QXmppMessageReceiptManager* m_manager; + QXmppClient m_client; + QXmppLogger* m_logger; bool m_messageDelivered = false; + bool m_receiptSent = false; }; void tst_QXmppMessageReceiptManager::initTestCase() { - connect(&m_manager, &QXmppMessageReceiptManager::messageDelivered, + m_manager = new QXmppMessageReceiptManager(); + m_logger = new QXmppLogger(); + + m_client.addExtension(m_manager); + m_logger->setLoggingType(QXmppLogger::SignalLogging); + m_client.setLogger(m_logger); + + connect(m_logger, &QXmppLogger::message, + this, &tst_QXmppMessageReceiptManager::onLoggerMessage); + + connect(m_manager, &QXmppMessageReceiptManager::messageDelivered, this, &tst_QXmppMessageReceiptManager::handleMessageDelivered); } @@ -57,6 +74,8 @@ void tst_QXmppMessageReceiptManager::testReceipt_data() { QTest::addColumn("xml"); QTest::addColumn("accept"); + QTest::addColumn("sent"); + QTest::addColumn("handled"); QTest::newRow("correct") << QByteArray( @@ -66,6 +85,8 @@ void tst_QXmppMessageReceiptManager::testReceipt_data() "type=\"normal\">" "" "") + << true + << false << true; QTest::newRow("from-to-equal") << QByteArray( @@ -75,22 +96,80 @@ void tst_QXmppMessageReceiptManager::testReceipt_data() "type=\"normal\">" "" "") + << false + << false + << true; + QTest::newRow("error") + << QByteArray( + " " + " " + " " + " " + " " + " " + " " + "" + "Your contact offline message queue is full. The message has been discarded." + "" + "" + "1 " + "") + << false + << false + << false; + QTest::newRow("message with receipt request") + << QByteArray( + " " + " " + " " + " " + "1 " + "") + << false + << true + << false; + + QTest::newRow("message with no receipt request") + << QByteArray( + " " + " " + " " + "1 " + "") + << false + << false << false; } void tst_QXmppMessageReceiptManager::testReceipt() { m_messageDelivered = false; + m_receiptSent = false; QFETCH(QByteArray, xml); QFETCH(bool, accept); + QFETCH(bool, sent); + QFETCH(bool, handled); QDomDocument doc; QCOMPARE(doc.setContent(xml, true), true); QDomElement element = doc.documentElement(); - QVERIFY(m_manager.handleStanza(element)); + QCOMPARE(m_manager->handleStanza(element), handled); QCOMPARE(m_messageDelivered, accept); + QCOMPARE(m_receiptSent, sent); } QTEST_MAIN(tst_QXmppMessageReceiptManager) -- cgit v1.2.3