From 2d45a382a1b96a08a7167cd9719dd9047fcc9167 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Mon, 13 Mar 2023 19:14:42 +0100 Subject: tests: Add VersionManager test --- tests/CMakeLists.txt | 1 + .../tst_qxmppversionmanager.cpp | 68 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 tests/qxmppversionmanager/tst_qxmppversionmanager.cpp (limited to 'tests') 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 +// +// 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(); +} + +void tst_QXmppVersionManager::testSendRequest() +{ + TestClient test; + auto *verManager = test.addNewExtension(); + + QSignalSpy spy(verManager, &QXmppVersionManager::versionReceived); + + auto id = verManager->requestVersion("juliet@capulet.com/balcony"); + test.expect(""); + verManager->handleStanza(xmlToDom(R"( + + Exodus + 0.7.0.4 + Windows-XP 5.01.2600 + +)")); + + QCOMPARE(spy.size(), 1); + auto version = spy.at(0).at(0).value(); + 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(); + verManager->setClientName("Exodus"); + verManager->setClientVersion("0.7.0.4"); + verManager->setClientOs("Windows-XP 5.01.2600"); + + verManager->handleStanza(xmlToDom(R"( + +)")); + test.expect(R"()" + "ExodusWindows-XP 5.01.26000.7.0.4" + ""); +} + +QTEST_MAIN(tst_QXmppVersionManager) +#include "tst_qxmppversionmanager.moc" -- cgit v1.2.3 From 867f74bd0c48eeca47dfa49999db8502d054b15c Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Mon, 13 Mar 2023 19:52:39 +0100 Subject: tests: Add EntityTimeManager test --- tests/CMakeLists.txt | 1 + .../tst_qxmppentitytimemanager.cpp | 68 ++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 tests/qxmppentitytimemanager/tst_qxmppentitytimemanager.cpp (limited to 'tests') 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 +// +// 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(); +} + +void tst_QXmppEntityTimeManager::testSendRequest() +{ + TestClient test; + auto *manager = test.addNewExtension(); + + QSignalSpy spy(manager, &QXmppEntityTimeManager::timeReceived); + + manager->requestTime("juliet@capulet.com/balcony"); + test.expect(""); + manager->handleStanza(xmlToDom(R"( + +)")); + + QCOMPARE(spy.size(), 1); + auto time = spy.at(0).at(0).value(); + 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(); + + manager->handleStanza(xmlToDom(R"( + )")); + + 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" -- cgit v1.2.3 From bb9f20419c794e4555860e6aeb097229653d5dc9 Mon Sep 17 00:00:00 2001 From: Melvin Keskin Date: Tue, 7 Mar 2023 23:22:06 +0100 Subject: EME: Always send encryption name as fallback Since QXmpp does not differentiate between different EME versions receiving clients support, it is better to always send the encryption name. It ensures that a name is displayed by the receiving client even if it does not support the latest EME version introducing a new encryption. --- src/base/QXmppMessage.cpp | 2 +- tests/qxmppmessage/tst_qxmppmessage.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'tests') diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index c0923d22..9527f5ed 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -1659,7 +1659,7 @@ void QXmppMessage::serializeExtensions(QXmlStreamWriter *writer, QXmpp::SceMode writer->writeStartElement(QStringLiteral("encryption")); writer->writeDefaultNamespace(ns_eme); writer->writeAttribute(QStringLiteral("namespace"), d->encryptionMethod); - helperToXmlAddAttribute(writer, QStringLiteral("name"), d->encryptionName); + helperToXmlAddAttribute(writer, QStringLiteral("name"), encryptionName()); writer->writeEndElement(); } diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp index deca437e..98ca5670 100644 --- a/tests/qxmppmessage/tst_qxmppmessage.cpp +++ b/tests/qxmppmessage/tst_qxmppmessage.cpp @@ -783,7 +783,7 @@ void tst_QXmppMessage::testEme() // test standard encryption: OMEMO const QByteArray xmlOmemo( "" - "" + "" "This message is encrypted with OMEMO, but your client doesn't seem to support that." ""); -- cgit v1.2.3