// SPDX-FileCopyrightText: 2016 Jeremy Lainé // SPDX-FileCopyrightText: 2016 Manjeet Dahiya // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppCarbonManager.h" #include "QXmppClient.h" #include "QXmppMessage.h" #include "util.h" #include class QXmppCarbonTestHelper : public QObject { Q_OBJECT public slots: void messageSent(const QXmppMessage &msg); void messageReceived(const QXmppMessage &msg); public: QXmppMessage m_expectedMessage; bool m_expectSent; bool m_signalTriggered; void compareMessages(const QXmppMessage &lhs, const QXmppMessage &rhs); }; class tst_QXmppCarbonManager : public QObject { Q_OBJECT private slots: void initTestCase(); void testHandleStanza_data(); void testHandleStanza(); private: QXmppCarbonTestHelper m_helper; QXmppCarbonManager *m_manager; QXmppClient client; }; void tst_QXmppCarbonManager::initTestCase() { m_manager = new QXmppCarbonManager(); connect(m_manager, &QXmppCarbonManager::messageSent, &m_helper, &QXmppCarbonTestHelper::messageSent); connect(m_manager, &QXmppCarbonManager::messageReceived, &m_helper, &QXmppCarbonTestHelper::messageReceived); client.connectToServer("romeo@montague.example", "a"); client.disconnectFromServer(); client.addExtension(m_manager); } void tst_QXmppCarbonManager::testHandleStanza_data() { QTest::addColumn("xml"); QTest::addColumn("accept"); QTest::addColumn("sent"); QTest::addColumn("forwardedxml"); QTest::newRow("received1") << QByteArray("" "" "" "" "What man art thou that, thus bescreen'd in night, so stumblest on my counsel?" "0e3141cd80894871a68e6fe6b1ec56fa" "" "" "" "") << true << false << QByteArray("" "What man art thou that, thus bescreen'd in night, so stumblest on my counsel?" "0e3141cd80894871a68e6fe6b1ec56fa" ""); QTest::newRow("sent1") << QByteArray("" "" "" "" "Neither, fair saint, if either thee dislike." "0e3141cd80894871a68e6fe6b1ec56fa" "" "" "" "") << true << true << QByteArray("" "Neither, fair saint, if either thee dislike." "0e3141cd80894871a68e6fe6b1ec56fa" ""); QTest::newRow("received-wrong-from") << QByteArray("" "" "" "" "What man art thou that, thus bescreen'd in night, so stumblest on my counsel?" "0e3141cd80894871a68e6fe6b1ec56fa" "" "" "" "") << false << false << QByteArray("" "What man art thou that, thus bescreen'd in night, so stumblest on my counsel?" "0e3141cd80894871a68e6fe6b1ec56fa" ""); QTest::newRow("sent-wrong-from") << QByteArray("" "" "" "" "Neither, fair saint, if either thee dislike." "0e3141cd80894871a68e6fe6b1ec56fa" "" "" "" "") << false << true << QByteArray("" "Neither, fair saint, if either thee dislike." "0e3141cd80894871a68e6fe6b1ec56fa" ""); QTest::newRow("forwarded_normal") << QByteArray("" "A most courteous exposition!" "" "" "" "Yet I should kill thee with much cherishing." "" "" "" "" "" "") << false << false << QByteArray(); } void tst_QXmppCarbonManager::testHandleStanza() { QFETCH(QByteArray, xml); QFETCH(bool, accept); 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; QCOMPARE(doc.setContent(xml, true), 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()); } QTEST_MAIN(tst_QXmppCarbonManager) #include "tst_qxmppcarbonmanager.moc"