// SPDX-FileCopyrightText: 2012 Jeremy Lainé // // SPDX-License-Identifier: LGPL-2.1-or-later #include "QXmppRosterIq.h" #include "util.h" #include class tst_QXmppRosterIq : public QObject { Q_OBJECT private: Q_SLOT void testItem_data(); Q_SLOT void testItem(); Q_SLOT void testApproved_data(); Q_SLOT void testApproved(); Q_SLOT void testVersion_data(); Q_SLOT void testVersion(); Q_SLOT void testMixAnnotate(); Q_SLOT void testMixChannel(); }; void tst_QXmppRosterIq::testItem_data() { QTest::addColumn("xml"); QTest::addColumn("name"); QTest::addColumn("subscriptionStatus"); QTest::addColumn("subscriptionType"); QTest::addColumn("approved"); QTest::newRow("none") << QByteArray(R"()") << "" << "" << int(QXmppRosterIq::Item::None) << true; QTest::newRow("from") << QByteArray(R"()") << "" << "" << int(QXmppRosterIq::Item::From) << false; QTest::newRow("to") << QByteArray(R"()") << "" << "" << int(QXmppRosterIq::Item::To) << false; QTest::newRow("both") << QByteArray(R"()") << "" << "" << int(QXmppRosterIq::Item::Both) << false; QTest::newRow("remove") << QByteArray(R"()") << "" << "" << int(QXmppRosterIq::Item::Remove) << false; QTest::newRow("notset") << QByteArray("") << "" << "" << int(QXmppRosterIq::Item::NotSet) << false; QTest::newRow("ask-subscribe") << QByteArray("") << "" << "subscribe" << int(QXmppRosterIq::Item::NotSet) << false; QTest::newRow("ask-unsubscribe") << QByteArray("") << "" << "unsubscribe" << int(QXmppRosterIq::Item::NotSet) << false; QTest::newRow("name") << QByteArray(R"()") << "foo bar" << "" << int(QXmppRosterIq::Item::NotSet) << false; } void tst_QXmppRosterIq::testItem() { QFETCH(QByteArray, xml); QFETCH(QString, name); QFETCH(QString, subscriptionStatus); QFETCH(int, subscriptionType); QFETCH(bool, approved); QXmppRosterIq::Item item; parsePacket(item, xml); QCOMPARE(item.bareJid(), QLatin1String("foo@example.com")); QCOMPARE(item.groups(), QSet()); QCOMPARE(item.name(), name); QCOMPARE(item.subscriptionStatus(), subscriptionStatus); QCOMPARE(int(item.subscriptionType()), subscriptionType); QCOMPARE(item.isApproved(), approved); serializePacket(item, xml); item = QXmppRosterIq::Item(); item.setBareJid("foo@example.com"); item.setName(name); item.setSubscriptionStatus(subscriptionStatus); item.setSubscriptionType(QXmppRosterIq::Item::SubscriptionType(subscriptionType)); item.setIsApproved(approved); serializePacket(item, xml); } void tst_QXmppRosterIq::testApproved_data() { QTest::addColumn("xml"); QTest::addColumn("approved"); QTest::newRow("true") << QByteArray(R"()") << true; QTest::newRow("1") << QByteArray(R"()") << true; QTest::newRow("false") << QByteArray(R"()") << false; QTest::newRow("0") << QByteArray(R"()") << false; QTest::newRow("empty") << QByteArray(R"()") << false; } void tst_QXmppRosterIq::testApproved() { QFETCH(QByteArray, xml); QFETCH(bool, approved); QXmppRosterIq::Item item; parsePacket(item, xml); QCOMPARE(item.isApproved(), approved); } void tst_QXmppRosterIq::testVersion_data() { QTest::addColumn("xml"); QTest::addColumn("version"); QTest::newRow("noversion") << QByteArray(R"()") << ""; QTest::newRow("version") << QByteArray(R"()") << "3345678"; } void tst_QXmppRosterIq::testVersion() { QFETCH(QByteArray, xml); QFETCH(QString, version); QXmppRosterIq iq; parsePacket(iq, xml); QCOMPARE(iq.version(), version); serializePacket(iq, xml); } void tst_QXmppRosterIq::testMixAnnotate() { const QByteArray xml( "" "" "" "" ""); QXmppRosterIq iq; parsePacket(iq, xml); QCOMPARE(iq.mixAnnotate(), true); serializePacket(iq, xml); iq.setMixAnnotate(false); QCOMPARE(iq.mixAnnotate(), false); } void tst_QXmppRosterIq::testMixChannel() { const QByteArray xml( "" "" ""); QXmppRosterIq::Item item; parsePacket(item, xml); QCOMPARE(item.isMixChannel(), true); QCOMPARE(item.mixParticipantId(), QString("123456")); serializePacket(item, xml); item.setIsMixChannel(false); QCOMPARE(item.isMixChannel(), false); item.setMixParticipantId("23a7n"); QCOMPARE(item.mixParticipantId(), QString("23a7n")); } QTEST_MAIN(tst_QXmppRosterIq) #include "tst_qxmpprosteriq.moc"