// SPDX-FileCopyrightText: 2023 Tibor Csötönyi // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppExternalServiceDiscoveryIq.h" #include "util.h" #include class tst_QXmppExternalServiceDiscoveryIq : public QObject { Q_OBJECT private: Q_SLOT void testIsExternalService_data(); Q_SLOT void testIsExternalService(); Q_SLOT void testExternalService(); Q_SLOT void testIsExternalServiceDiscoveryIq_data(); Q_SLOT void testIsExternalServiceDiscoveryIq(); Q_SLOT void testExternalServiceDiscoveryIq(); }; void tst_QXmppExternalServiceDiscoveryIq::testIsExternalService_data() { QTest::addColumn("xml"); QTest::addColumn("isValid"); QTest::newRow("valid") << QByteArrayLiteral("") << true; QTest::newRow("invalidHost") << QByteArrayLiteral("") << false; QTest::newRow("invalidHostEmpty") << QByteArrayLiteral("") << false; QTest::newRow("invalidType") << QByteArrayLiteral("") << false; QTest::newRow("invalidTypeEmpty") << QByteArrayLiteral("") << false; QTest::newRow("invalidTag") << QByteArrayLiteral("") << false; QTest::newRow("invalidTag") << QByteArrayLiteral("") << false; } void tst_QXmppExternalServiceDiscoveryIq::testIsExternalService() { QFETCH(QByteArray, xml); QFETCH(bool, isValid); QCOMPARE(QXmppExternalService::isExternalService(xmlToDom(xml)), isValid); } void tst_QXmppExternalServiceDiscoveryIq::testExternalService() { QByteArray xml { QByteArrayLiteral( "") }; QXmppExternalService service; parsePacket(service, xml); QCOMPARE(service.host(), "stun.shakespeare.lit"); QCOMPARE(service.port(), 9998); QCOMPARE(service.transport().has_value(), true); QCOMPARE(service.transport().value(), QXmppExternalService::Transport::Udp); QCOMPARE(service.type(), "stun"); serializePacket(service, xml); } void tst_QXmppExternalServiceDiscoveryIq::testIsExternalServiceDiscoveryIq_data() { QTest::addColumn("xml"); QTest::addColumn("isValid"); QTest::newRow("valid") << QByteArrayLiteral( "" "" "" "" "") << true; QTest::newRow("invalidTag") << QByteArrayLiteral( "" "" "" "" "") << false; QTest::newRow("invalidNamespace") << QByteArrayLiteral( "" "" "" "" "") << false; } void tst_QXmppExternalServiceDiscoveryIq::testIsExternalServiceDiscoveryIq() { QFETCH(QByteArray, xml); QFETCH(bool, isValid); QCOMPARE(QXmppExternalServiceDiscoveryIq::isExternalServiceDiscoveryIq(xmlToDom(xml)), isValid); } void tst_QXmppExternalServiceDiscoveryIq::testExternalServiceDiscoveryIq() { const QByteArray xml { QByteArrayLiteral( "" "" "" "" "" "" "" "" "") }; QXmppExternalServiceDiscoveryIq iq1; iq1.setType(QXmppIq::Result); parsePacket(iq1, xml); QCOMPARE(iq1.externalServices().length(), 5); serializePacket(iq1, xml); QXmppExternalService service1; service1.setHost("127.0.0.1"); service1.setType("ftp"); iq1.addExternalService(service1); QXmppExternalService service2; service2.setHost("127.0.0.1"); service2.setType("ftp"); iq1.addExternalService(service2); QCOMPARE(iq1.externalServices().length(), 7); const QByteArray xml2 { QByteArrayLiteral( "" "" "" "" "" "" "") }; QXmppExternalServiceDiscoveryIq iq2; iq2.setType(QXmppIq::Result); QXmppExternalService service3; service3.setHost("193.169.1.256"); service3.setType("turn"); QXmppExternalService service4; service4.setHost("194.170.2.257"); service4.setType("stun"); QXmppExternalService service5; service5.setHost("195.171.3.258"); service5.setType("ftp"); iq2.setExternalServices({ service3, service4, service5 }); QCOMPARE(iq2.externalServices().length(), 3); serializePacket(iq2, xml2); } QTEST_MAIN(tst_QXmppExternalServiceDiscoveryIq) #include "tst_qxmppexternalservicediscoveryiq.moc"