diff options
| author | Blue <blue@macaw.me> | 2020-03-27 15:17:42 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-03-27 13:17:42 +0100 |
| commit | 7d128f179487a68ba975275996b8efadbd143721 (patch) | |
| tree | 7fb539b58157ec76b80ad14c8626dc77f4ffe400 /tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp | |
| parent | 0b616178800ccb4e5d344cd66b8f1ab9f5d3b698 (diff) | |
| download | qxmpp-7d128f179487a68ba975275996b8efadbd143721.tar.gz | |
QXmppMessageReceiptManager: Fix receipts are sent on error messages (#269)
This fixes that behaviour and extends the tests for QXmppMessageReceiptManager.
Diffstat (limited to 'tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp')
| -rw-r--r-- | tests/qxmppmessagereceiptmanager/tst_qxmppmessagereceiptmanager.cpp | 85 |
1 files changed, 82 insertions, 3 deletions
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<QByteArray>("xml"); QTest::addColumn<bool>("accept"); + QTest::addColumn<bool>("sent"); + QTest::addColumn<bool>("handled"); QTest::newRow("correct") << QByteArray( @@ -66,6 +85,8 @@ void tst_QXmppMessageReceiptManager::testReceipt_data() "type=\"normal\">" "<received xmlns=\"urn:xmpp:receipts\" id=\"richard2-4.1.247\"/>" "</message>") + << true + << false << true; QTest::newRow("from-to-equal") << QByteArray( @@ -75,22 +96,80 @@ void tst_QXmppMessageReceiptManager::testReceipt_data() "type=\"normal\">" "<received xmlns=\"urn:xmpp:receipts\" id=\"richard2-4.1.247\"/>" "</message>") + << false + << false + << true; + QTest::newRow("error") + << QByteArray( + "<message xml:lang=\"en\" " + "to=\"northumberland@shakespeare.lit/westminster\" " + "from=\"kingrichard@royalty.england.lit/throne\" " + "type=\"error\" id=\"bi29sg183b4v\" " + "> " + "<archived xmlns=\"urn:xmpp:mam:tmp\" by=\"kingrichard@royalty.england.lit\" id=\"1585254642941569\"/> " + "<stanza-id xmlns=\"urn:xmpp:sid:0\" by=\"kingrichard@royalty.england.lit\" id=\"1585254642941569\"/> " + "<delay xmlns=\"urn:xmpp:delay\" stamp=\"2020-03-26T20:30:41.678Z\"/> " + "<request xmlns=\"urn:xmpp:receipts\"/> " + "<error code=\"500\" type=\"wait\"> " + "<resource-constraint xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/> " + "<text xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\" xml:lang=\"en\">" + "Your contact offline message queue is full. The message has been discarded." + "</text>" + "</error>" + "<body>1</body> " + "</message>") + << false + << false + << false; + QTest::newRow("message with receipt request") + << QByteArray( + "<message xml:lang=\"en\" " + "to=\"northumberland@shakespeare.lit/westminster\" " + "from=\"kingrichard@royalty.england.lit/throne\" " + "type=\"chat\" id=\"bi29sg183b4v\" " + "> " + "<archived xmlns=\"urn:xmpp:mam:tmp\" by=\"kingrichard@royalty.england.lit\" id=\"1585254642941569\"/> " + "<stanza-id xmlns=\"urn:xmpp:sid:0\" by=\"kingrichard@royalty.england.lit\" id=\"1585254642941569\"/> " + "<request xmlns=\"urn:xmpp:receipts\"/> " + "<body>1</body> " + "</message>") + << false + << true + << false; + + QTest::newRow("message with no receipt request") + << QByteArray( + "<message xml:lang=\"en\" " + "to=\"northumberland@shakespeare.lit/westminster\" " + "from=\"kingrichard@royalty.england.lit/throne\" " + "type=\"chat\" id=\"bi29sg183b4v\" " + "> " + "<archived xmlns=\"urn:xmpp:mam:tmp\" by=\"kingrichard@royalty.england.lit\" id=\"1585254642941569\"/> " + "<stanza-id xmlns=\"urn:xmpp:sid:0\" by=\"kingrichard@royalty.england.lit\" id=\"1585254642941569\"/> " + "<body>1</body> " + "</message>") + << 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) |
