aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2023-03-13 19:52:39 +0100
committerLinus Jahn <lnj@kaidan.im>2023-03-13 20:28:44 +0100
commit867f74bd0c48eeca47dfa49999db8502d054b15c (patch)
tree9a4051e1cbc427b1e7c28db8e44bb97fc99a0f66
parent4985e321d57600faf206e22ed1228b9bd442a4f3 (diff)
tests: Add EntityTimeManager test
-rw-r--r--tests/CMakeLists.txt1
-rw-r--r--tests/qxmppentitytimemanager/tst_qxmppentitytimemanager.cpp68
2 files changed, 69 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index f7a5312b..c1991ea0 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -35,6 +35,7 @@ add_simple_test(qxmppdataform)
add_simple_test(qxmppdiscoveryiq)
add_simple_test(qxmppdiscoverymanager TestClient.h)
add_simple_test(qxmppentitytimeiq)
+add_simple_test(qxmppentitytimemanager TestClient.h)
add_simple_test(qxmpphttpuploadiq)
add_simple_test(qxmppiceconnection)
add_simple_test(qxmppiq)
diff --git a/tests/qxmppentitytimemanager/tst_qxmppentitytimemanager.cpp b/tests/qxmppentitytimemanager/tst_qxmppentitytimemanager.cpp
new file mode 100644
index 00000000..a76a628d
--- /dev/null
+++ b/tests/qxmppentitytimemanager/tst_qxmppentitytimemanager.cpp
@@ -0,0 +1,68 @@
+// SPDX-FileCopyrightText: 2023 Linus Jahn <lnj@kaidan.im>
+//
+// SPDX-License-Identifier: LGPL-2.1-or-later
+
+#include "QXmppEntityTimeIq.h"
+#include "QXmppEntityTimeManager.h"
+
+#include "TestClient.h"
+
+Q_DECLARE_METATYPE(QXmppEntityTimeIq)
+
+class tst_QXmppEntityTimeManager : public QObject
+{
+ Q_OBJECT
+ Q_SLOT void initTestCase();
+ Q_SLOT void testSendRequest();
+ Q_SLOT void testHandleRequest();
+};
+
+void tst_QXmppEntityTimeManager::initTestCase()
+{
+ qRegisterMetaType<QXmppEntityTimeIq>();
+}
+
+void tst_QXmppEntityTimeManager::testSendRequest()
+{
+ TestClient test;
+ auto *manager = test.addNewExtension<QXmppEntityTimeManager>();
+
+ QSignalSpy spy(manager, &QXmppEntityTimeManager::timeReceived);
+
+ manager->requestTime("juliet@capulet.com/balcony");
+ test.expect("<iq id='qxmpp1' to='juliet@capulet.com/balcony' type='get'><time xmlns='urn:xmpp:time'/></iq>");
+ manager->handleStanza(xmlToDom(R"(<iq id='qxmpp1' to='romeo@montague.net/orchard' from='juliet@capulet.com/balcony' type='result'>
+ <time xmlns='urn:xmpp:time'>
+ <tzo>-06:00</tzo>
+ <utc>2006-12-19T17:58:35Z</utc>
+ </time>
+</iq>)"));
+
+ QCOMPARE(spy.size(), 1);
+ auto time = spy.at(0).at(0).value<QXmppEntityTimeIq>();
+ QCOMPARE(time.utc(), QDateTime({2006, 12, 19}, {17, 58, 35}, Qt::UTC));
+ QCOMPARE(time.tzo(), -6 * 60 * 60);
+}
+
+void tst_QXmppEntityTimeManager::testHandleRequest()
+{
+ TestClient test;
+ test.configuration().setJid("juliet@capulet.com/balcony");
+
+ auto *manager = test.addNewExtension<QXmppEntityTimeManager>();
+
+ manager->handleStanza(xmlToDom(R"(<iq type='get' from='romeo@montague.net/orchard' to='juliet@capulet.com/balcony' id='time_1'>
+ <time xmlns='urn:xmpp:time'/>
+</iq>)"));
+
+ auto packet = xmlToDom(test.takePacket());
+ QVERIFY(QXmppEntityTimeIq::isEntityTimeIq(packet));
+ QXmppEntityTimeIq resp;
+ resp.parse(packet);
+
+ QCOMPARE(resp.id(), QStringLiteral("time_1"));
+ QCOMPARE(resp.type(), QXmppIq::Result);
+}
+
+QTEST_MAIN(tst_QXmppEntityTimeManager)
+#include "tst_qxmppentitytimemanager.moc"