diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-08-13 22:57:03 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-08-14 17:32:53 +0200 |
| commit | c89d39d66affd6a1c2a299ca424deaf88ea17ba9 (patch) | |
| tree | b6779a314274fa2da67ca0b04a1667aca21d2f34 /tests | |
| parent | cb9a9db0649ce4eda1078f7904504fdfc21043bc (diff) | |
| download | qxmpp-c89d39d66affd6a1c2a299ca424deaf88ea17ba9.tar.gz | |
tests: CarbonManager: Also test manager v2 & refactor
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmppcarbonmanager/tst_qxmppcarbonmanager.cpp | 146 |
1 files changed, 86 insertions, 60 deletions
diff --git a/tests/qxmppcarbonmanager/tst_qxmppcarbonmanager.cpp b/tests/qxmppcarbonmanager/tst_qxmppcarbonmanager.cpp index 6f7aff62..5db736f3 100644 --- a/tests/qxmppcarbonmanager/tst_qxmppcarbonmanager.cpp +++ b/tests/qxmppcarbonmanager/tst_qxmppcarbonmanager.cpp @@ -1,29 +1,71 @@ // SPDX-FileCopyrightText: 2016 Jeremy Lainé <jeremy.laine@m4x.org> // SPDX-FileCopyrightText: 2016 Manjeet Dahiya <manjeetdahiya@gmail.com> +// SPDX-FileCopyrightText: 2022 Linus Jahn <lnj@kaidan.im> // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppCarbonManager.h" +#include "QXmppCarbonManagerV2.h" #include "QXmppClient.h" +#include "QXmppE2eeMetadata.h" #include "QXmppMessage.h" +#include "QXmppMessageHandler.h" #include "util.h" #include <QObject> +void compareMessages(const QXmppMessage &lhs, const QXmppMessage &rhs) +{ + QCOMPARE(lhs.body(), rhs.body()); + QCOMPARE(lhs.from(), rhs.from()); + QCOMPARE(lhs.id(), rhs.id()); + QCOMPARE(lhs.isAttentionRequested(), rhs.isAttentionRequested()); + QCOMPARE(lhs.isMarkable(), rhs.isMarkable()); + QCOMPARE(lhs.isPrivate(), rhs.isPrivate()); + QCOMPARE(lhs.isReceiptRequested(), rhs.isReceiptRequested()); + QCOMPARE(lhs.lang(), rhs.lang()); + QCOMPARE(lhs.to(), rhs.to()); + QCOMPARE(lhs.thread(), rhs.thread()); + QCOMPARE(lhs.stamp(), rhs.stamp()); + QCOMPARE(lhs.type(), rhs.type()); +} + class QXmppCarbonTestHelper : public QObject { Q_OBJECT public slots: - void messageSent(const QXmppMessage &msg); - void messageReceived(const QXmppMessage &msg); + void messageSent(const QXmppMessage &msg) + { + m_signalTriggered = true; + QCOMPARE(m_expectSent, true); + + compareMessages(m_expectedMessage, msg); + } + void messageReceived(const QXmppMessage &msg) + { + m_signalTriggered = true; + QCOMPARE(m_expectSent, false); + + compareMessages(m_expectedMessage, msg); + } public: QXmppMessage m_expectedMessage; bool m_expectSent; bool m_signalTriggered; +}; - void compareMessages(const QXmppMessage &lhs, const QXmppMessage &rhs); +class MessageHandler : public QXmppClientExtension, public QXmppMessageHandler +{ +public: + bool handleMessage(const QXmppMessage &msg) override + { + received.push_back(msg); + return false; + } + + std::vector<QXmppMessage> received; }; class tst_QXmppCarbonManager : public QObject @@ -38,24 +80,24 @@ private slots: private: QXmppCarbonTestHelper m_helper; - QXmppCarbonManager *m_manager; + MessageHandler *m_messageHandler; + QXmppCarbonManager *m_managerV1; + QXmppCarbonManagerV2 *m_managerV2; QXmppClient client; }; void tst_QXmppCarbonManager::initTestCase() { - m_manager = new QXmppCarbonManager(); + client.configuration().setJid("romeo@montague.example"); + m_managerV1 = client.addNewExtension<QXmppCarbonManager>(); + m_managerV2 = client.addNewExtension<QXmppCarbonManagerV2>(); + m_messageHandler = client.addNewExtension<MessageHandler>(); - connect(m_manager, &QXmppCarbonManager::messageSent, + connect(m_managerV1, &QXmppCarbonManager::messageSent, &m_helper, &QXmppCarbonTestHelper::messageSent); - connect(m_manager, &QXmppCarbonManager::messageReceived, + connect(m_managerV1, &QXmppCarbonManager::messageReceived, &m_helper, &QXmppCarbonTestHelper::messageReceived); - - client.connectToServer("romeo@montague.example", "a"); - client.disconnectFromServer(); - - client.addExtension(m_manager); } void tst_QXmppCarbonManager::testHandleStanza_data() @@ -197,54 +239,38 @@ void tst_QXmppCarbonManager::testHandleStanza() QFETCH(bool, sent); QFETCH(QByteArray, forwardedxml); - m_helper.m_expectedMessage = QXmppMessage(); - - if (!forwardedxml.isEmpty()) - parsePacket(m_helper.m_expectedMessage, forwardedxml); - - m_helper.m_expectSent = sent; - m_helper.m_signalTriggered = false; - - QDomDocument doc; - QVERIFY(doc.setContent(xml, true)); - QDomElement element = doc.documentElement(); - - bool accepted = m_manager->handleStanza(element); - - QCOMPARE(accepted, accept); - QCOMPARE(m_helper.m_signalTriggered, accept); -} - -void QXmppCarbonTestHelper::messageSent(const QXmppMessage &msg) -{ - m_signalTriggered = true; - QCOMPARE(m_expectSent, true); - - compareMessages(m_expectedMessage, msg); -} - -void QXmppCarbonTestHelper::messageReceived(const QXmppMessage &msg) -{ - m_signalTriggered = true; - QCOMPARE(m_expectSent, false); - - compareMessages(m_expectedMessage, msg); -} - -void QXmppCarbonTestHelper::compareMessages(const QXmppMessage &lhs, const QXmppMessage &rhs) -{ - QCOMPARE(lhs.body(), rhs.body()); - QCOMPARE(lhs.from(), rhs.from()); - QCOMPARE(lhs.id(), rhs.id()); - QCOMPARE(lhs.isAttentionRequested(), rhs.isAttentionRequested()); - QCOMPARE(lhs.isMarkable(), rhs.isMarkable()); - QCOMPARE(lhs.isPrivate(), rhs.isPrivate()); - QCOMPARE(lhs.isReceiptRequested(), rhs.isReceiptRequested()); - QCOMPARE(lhs.lang(), rhs.lang()); - QCOMPARE(lhs.to(), rhs.to()); - QCOMPARE(lhs.thread(), rhs.thread()); - QCOMPARE(lhs.stamp(), rhs.stamp()); - QCOMPARE(lhs.type(), rhs.type()); + QXmppMessage expectedMessage; + if (!forwardedxml.isEmpty()) { + parsePacket(expectedMessage, forwardedxml); + } + + { + m_helper.m_expectedMessage = expectedMessage; + m_helper.m_expectSent = sent; + m_helper.m_signalTriggered = false; + + QDomDocument doc; + QVERIFY(doc.setContent(xml, true)); + QDomElement element = doc.documentElement(); + + bool accepted = m_managerV1->handleStanza(element); + + QCOMPARE(accepted, accept); + QCOMPARE(m_helper.m_signalTriggered, accept); + } + { + m_messageHandler->received.clear(); + + bool accepted = m_managerV2->handleStanza(xmlToDom(xml), {}); + QCOMPARE(accepted, accept); + + if (accept) { + QCOMPARE(m_messageHandler->received.size(), size_t(1)); + compareMessages(m_messageHandler->received[0], expectedMessage); + } else { + QCOMPARE(m_messageHandler->received.size(), size_t(0)); + } + } } QTEST_MAIN(tst_QXmppCarbonManager) |
