aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2021-02-19 20:13:01 +0100
committerLinus Jahn <lnj@kaidan.im>2021-03-11 19:22:38 +0100
commit952d925d3492ae98a7ed617ed8d76d7238cbcd5c (patch)
tree91a58b16636f775d9c28dce6b42e60e2b5685570
parentb6f72e1462bd1a386892e65b54a3849b99ab0995 (diff)
downloadqxmpp-952d925d3492ae98a7ed617ed8d76d7238cbcd5c.tar.gz
tests: Add integration tests for VCardManager
-rw-r--r--tests/qxmppvcardmanager/tst_qxmppvcardmanager.cpp75
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"