aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-03-13 19:14:42 +0100
committerLinus Jahn <lnj@kaidan.im>2023-03-13 20:28:01 +0100
commit2d45a382a1b96a08a7167cd9719dd9047fcc9167 (patch)
treeca0c1678eaa1d63f0f702e2fedd889be7887505f /tests
parentaf46ac9487caf54bb0783616af4e209b94b1cde5 (diff)
downloadqxmpp-2d45a382a1b96a08a7167cd9719dd9047fcc9167.tar.gz
tests: Add VersionManager test
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt1
-rw-r--r--tests/qxmppversionmanager/tst_qxmppversionmanager.cpp68
2 files changed, 69 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 373ad23f..f7a5312b 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -77,6 +77,7 @@ add_simple_test(qxmppusertunemanager TestClient.h)
add_simple_test(qxmppvcardiq)
add_simple_test(qxmppvcardmanager)
add_simple_test(qxmppversioniq)
+add_simple_test(qxmppversionmanager TestClient.h)
if(WITH_QCA)
add_simple_test(qxmppfileencryption)
diff --git a/tests/qxmppversionmanager/tst_qxmppversionmanager.cpp b/tests/qxmppversionmanager/tst_qxmppversionmanager.cpp
new file mode 100644
index 00000000..b28d0de2
--- /dev/null
+++ b/tests/qxmppversionmanager/tst_qxmppversionmanager.cpp
@@ -0,0 +1,68 @@
+// SPDX-FileCopyrightText: 2023 Linus Jahn <lnj@kaidan.im>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#include "QXmppVersionManager.h"
+#include "QXmppVersionIq.h"
+
+#include "TestClient.h"
+
+Q_DECLARE_METATYPE(QXmppVersionIq);
+
+class tst_QXmppVersionManager : public QObject
+{
+ Q_OBJECT
+ Q_SLOT void initTestCase();
+ Q_SLOT void testSendRequest();
+ Q_SLOT void testHandleRequest();
+};
+
+void tst_QXmppVersionManager::initTestCase()
+{
+ qRegisterMetaType<QXmppVersionIq>();
+}
+
+void tst_QXmppVersionManager::testSendRequest()
+{
+ TestClient test;
+ auto *verManager = test.addNewExtension<QXmppVersionManager>();
+
+ QSignalSpy spy(verManager, &QXmppVersionManager::versionReceived);
+
+ auto id = verManager->requestVersion("juliet@capulet.com/balcony");
+ test.expect("<iq id='qxmpp1' to='juliet@capulet.com/balcony' type='get'><query xmlns='jabber:iq:version'/></iq>");
+ verManager->handleStanza(xmlToDom(R"(<iq type='result' from='juliet@capulet.com/balcony' id='qxmpp1'>
+ <query xmlns='jabber:iq:version'>
+ <name>Exodus</name>
+ <version>0.7.0.4</version>
+ <os>Windows-XP 5.01.2600</os>
+ </query>
+</iq>)"));
+
+ QCOMPARE(spy.size(), 1);
+ auto version = spy.at(0).at(0).value<QXmppVersionIq>();
+ QCOMPARE(version.name(), QStringLiteral("Exodus"));
+ QCOMPARE(version.version(), QStringLiteral("0.7.0.4"));
+ QCOMPARE(version.os(), QStringLiteral("Windows-XP 5.01.2600"));
+}
+
+void tst_QXmppVersionManager::testHandleRequest()
+{
+ TestClient test;
+ test.configuration().setJid("juliet@capulet.com/balcony");
+
+ auto *verManager = test.addNewExtension<QXmppVersionManager>();
+ verManager->setClientName("Exodus");
+ verManager->setClientVersion("0.7.0.4");
+ verManager->setClientOs("Windows-XP 5.01.2600");
+
+ verManager->handleStanza(xmlToDom(R"(<iq type='get' from='romeo@montague.net/orchard' to='juliet@capulet.com/balcony' id='version_1'>
+ <query xmlns='jabber:iq:version'/>
+</iq>)"));
+ test.expect(R"(<iq id='version_1' to='romeo@montague.net/orchard' type='result'>)"
+ "<query xmlns='jabber:iq:version'><name>Exodus</name><os>Windows-XP 5.01.2600</os><version>0.7.0.4</version>"
+ "</query></iq>");
+}
+
+QTEST_MAIN(tst_QXmppVersionManager)
+#include "tst_qxmppversionmanager.moc"