diff options
| author | Linus Jahn <lnj@kaidan.im> | 2020-04-01 01:27:20 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2020-04-01 01:27:20 +0200 |
| commit | 03764c9abcd3c79873038935566f4e31a845ada9 (patch) | |
| tree | be9cfece301df46606ba6eef62dec3d60b5397b7 /tests/qxmppmessagereceiptmanager | |
| parent | 553b95576ee5cc3e74a47a221bdc2627de739cfe (diff) | |
| parent | 3ab1d34eceb8776193fe1cdc2070264d7dfbad30 (diff) | |
| download | qxmpp-03764c9abcd3c79873038935566f4e31a845ada9.tar.gz | |
Merge branch 'stable'
Diffstat (limited to 'tests/qxmppmessagereceiptmanager')
| -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) |
