diff options
| author | Linus Jahn <lnj@kaidan.im> | 2021-02-19 20:13:01 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2021-03-11 19:22:38 +0100 |
| commit | 952d925d3492ae98a7ed617ed8d76d7238cbcd5c (patch) | |
| tree | 91a58b16636f775d9c28dce6b42e60e2b5685570 | |
| parent | b6f72e1462bd1a386892e65b54a3849b99ab0995 (diff) | |
| download | qxmpp-952d925d3492ae98a7ed617ed8d76d7238cbcd5c.tar.gz | |
tests: Add integration tests for VCardManager
| -rw-r--r-- | tests/qxmppvcardmanager/tst_qxmppvcardmanager.cpp | 75 |
1 files changed, 70 insertions, 5 deletions
diff --git a/tests/qxmppvcardmanager/tst_qxmppvcardmanager.cpp b/tests/qxmppvcardmanager/tst_qxmppvcardmanager.cpp index 15c90620..a68d56a9 100644 --- a/tests/qxmppvcardmanager/tst_qxmppvcardmanager.cpp +++ b/tests/qxmppvcardmanager/tst_qxmppvcardmanager.cpp @@ -22,11 +22,15 @@ * */ -#include <QObject> #include "QXmppClient.h" #include "QXmppVCardIq.h" #include "QXmppVCardManager.h" + +#include <memory> + +#include "IntegrationTesting.h" #include "util.h" +#include <QObject> Q_DECLARE_METATYPE(QXmppVCardIq); @@ -34,11 +38,13 @@ class tst_QXmppVCardManager : public QObject { Q_OBJECT -private slots: - void testHandleStanza_data(); - void testHandleStanza(); - private: + Q_SLOT void testHandleStanza_data(); + Q_SLOT void testHandleStanza(); + + // integration tests + Q_SLOT void testSetClientVCard(); + QXmppClient m_client; }; @@ -104,5 +110,64 @@ void tst_QXmppVCardManager::testHandleStanza() m_client.removeExtension(manager); } +void tst_QXmppVCardManager::testSetClientVCard() +{ + SKIP_IF_INTEGRATION_TESTS_DISABLED(); + + auto client = std::make_unique<QXmppClient>(); + auto *vCardManager = client->findExtension<QXmppVCardManager>(); + auto config = IntegrationTests::clientConfiguration(); + + QSignalSpy connectSpy(client.get(), &QXmppClient::connected); + QSignalSpy disconnectSpy(client.get(), &QXmppClient::disconnected); + QSignalSpy vCardSpy(vCardManager, &QXmppVCardManager::clientVCardReceived); + + // connect to server + client->connectToServer(config); + QVERIFY2(connectSpy.wait(), "Could not connect to server!"); + + // request own vcard + vCardManager->requestClientVCard(); + QVERIFY(vCardSpy.wait()); + + // check our vcard has the correct address + QCOMPARE(vCardManager->clientVCard().from(), client->configuration().jidBare()); + + // set a new vcard + QXmppVCardIq newVCard; + newVCard.setFirstName(QStringLiteral("Bob")); + newVCard.setBirthday(QDate(1, 2, 2000)); + newVCard.setEmail(QStringLiteral("bob@qxmpp.org")); + vCardManager->setClientVCard(newVCard); + + // there's currently no signal to see whether the change was successful... + + QCoreApplication::processEvents(); + + // reconnect + client->disconnectFromServer(); + QVERIFY(disconnectSpy.wait()); + + client->connectToServer(config); + QVERIFY2(connectSpy.wait(), "Could not connect to server!"); + + // request own vcard + vCardManager->requestClientVCard(); + QVERIFY(vCardSpy.wait()); + + // check our vcard has been changed successfully + QCOMPARE(vCardManager->clientVCard().from(), client->configuration().jidBare()); + QCOMPARE(vCardManager->clientVCard().firstName(), QStringLiteral("Bob")); + QCOMPARE(vCardManager->clientVCard().birthday(), QDate(01, 02, 2000)); + QCOMPARE(vCardManager->clientVCard().email(), QStringLiteral("bob@qxmpp.org")); + + // reset the vcard for future tests + vCardManager->setClientVCard(QXmppVCardIq()); + + // disconnect + client->disconnectFromServer(); + QVERIFY(disconnectSpy.wait()); +} + QTEST_MAIN(tst_QXmppVCardManager) #include "tst_qxmppvcardmanager.moc" |
