diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2015-08-15 10:07:17 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2015-08-15 10:07:17 +0200 |
| commit | cb429d9d01b0ef34086de6234a6573ccc649582c (patch) | |
| tree | e955a4a8fab7cdf09b12df65ae5353c8cc981b1e /tests | |
| parent | 3231fbf9b4366005f71fcc3f00b447dda58d65fe (diff) | |
| download | qxmpp-cb429d9d01b0ef34086de6234a6573ccc649582c.tar.gz | |
add test for QXmppTransferManager
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmpptransfermanager/qxmpptransfermanager.pro | 4 | ||||
| -rw-r--r-- | tests/qxmpptransfermanager/test.svg | 86 | ||||
| -rw-r--r-- | tests/qxmpptransfermanager/tst_qxmpptransfermanager.cpp | 126 | ||||
| -rw-r--r-- | tests/qxmpptransfermanager/tst_qxmpptransfermanager.qrc | 5 | ||||
| -rw-r--r-- | tests/tests.pro | 1 |
5 files changed, 222 insertions, 0 deletions
diff --git a/tests/qxmpptransfermanager/qxmpptransfermanager.pro b/tests/qxmpptransfermanager/qxmpptransfermanager.pro new file mode 100644 index 00000000..325daa09 --- /dev/null +++ b/tests/qxmpptransfermanager/qxmpptransfermanager.pro @@ -0,0 +1,4 @@ +include(../tests.pri) +TARGET = tst_qxmpptransfermanager +RESOURCES += tst_qxmpptransfermanager.qrc +SOURCES += tst_qxmpptransfermanager.cpp diff --git a/tests/qxmpptransfermanager/test.svg b/tests/qxmpptransfermanager/test.svg new file mode 100644 index 00000000..b2838872 --- /dev/null +++ b/tests/qxmpptransfermanager/test.svg @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="svg3056" + version="1.1" + inkscape:version="0.47 r22583" + width="6" + height="6" + sodipodi:docname="test.svg"> + <metadata + id="metadata3062"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs3060"> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 0.5 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="1 : 0.5 : 1" + inkscape:persp3d-origin="0.5 : 0.33333333 : 1" + id="perspective3064" /> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="678" + id="namedview3058" + showgrid="true" + inkscape:snap-global="true" + inkscape:zoom="41.333333" + inkscape:cx="3" + inkscape:cy="3" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="0" + inkscape:current-layer="svg3056"> + <inkscape:grid + type="xygrid" + id="grid3072" /> + </sodipodi:namedview> + <rect + style="fill:#00ff00;fill-opacity:1;stroke:none" + id="rect3074" + height="6" + x="2" + y="0" + width="2" /> + <rect + width="2" + y="0" + x="0" + height="6" + id="rect3848" + style="fill:#ff0000;fill-opacity:1;stroke:none" /> + <rect + width="2" + y="0" + x="4" + height="6" + id="rect3850" + style="fill:#0000ff;fill-opacity:1;stroke:none" /> +</svg> diff --git a/tests/qxmpptransfermanager/tst_qxmpptransfermanager.cpp b/tests/qxmpptransfermanager/tst_qxmpptransfermanager.cpp new file mode 100644 index 00000000..7d232468 --- /dev/null +++ b/tests/qxmpptransfermanager/tst_qxmpptransfermanager.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (C) 2008-2014 The QXmpp developers + * + * Authors: + * Jeremy Lainé + * + * Source: + * https://github.com/qxmpp-project/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#include <QBuffer> +#include <QObject> + +#include "QXmppClient.h" +#include "QXmppServer.h" +#include "QXmppTransferManager.h" +#include "util.h" + +class tst_QXmppTransferManager : public QObject +{ + Q_OBJECT + +private slots: + void testByteStreams(); + + void acceptFile(QXmppTransferJob *job); + +private: + QBuffer receiverBuffer; +}; + +void tst_QXmppTransferManager::acceptFile(QXmppTransferJob *job) +{ + receiverBuffer.open(QIODevice::WriteOnly); + job->accept(&receiverBuffer); +} + +void tst_QXmppTransferManager::testByteStreams() +{ + QCOMPARE(1, 1); + + const QString testDomain("localhost"); + const QHostAddress testHost(QHostAddress::LocalHost); + const quint16 testPort = 12345; + + QXmppLogger logger; + //logger.setLoggingType(QXmppLogger::StdoutLogging); + + // prepare server + TestPasswordChecker passwordChecker; + passwordChecker.addCredentials("sender", "testpwd"); + passwordChecker.addCredentials("receiver", "testpwd"); + + QXmppServer server; + server.setDomain(testDomain); + server.setLogger(&logger); + server.setPasswordChecker(&passwordChecker); + server.listenForClients(testHost, testPort); + + // prepare sender + QXmppClient sender; + QXmppTransferManager *senderManager = new QXmppTransferManager; + sender.addExtension(senderManager); + sender.setLogger(&logger); + + QEventLoop senderLoop; + connect(&sender, SIGNAL(connected()), &senderLoop, SLOT(quit())); + connect(&sender, SIGNAL(disconnected()), &senderLoop, SLOT(quit())); + + QXmppConfiguration config; + config.setDomain(testDomain); + config.setHost(testHost.toString()); + config.setPort(testPort); + config.setUser("sender"); + config.setPassword("testpwd"); + sender.connectToServer(config); + senderLoop.exec(); + QCOMPARE(sender.isConnected(), true); + + // prepare receiver + QXmppClient receiver; + QXmppTransferManager *receiverManager = new QXmppTransferManager; + connect(receiverManager, SIGNAL(fileReceived(QXmppTransferJob*)), + this, SLOT(acceptFile(QXmppTransferJob*))); + receiver.addExtension(receiverManager); + receiver.setLogger(&logger); + + QEventLoop receiverLoop; + connect(&receiver, SIGNAL(connected()), &receiverLoop, SLOT(quit())); + connect(&receiver, SIGNAL(disconnected()), &receiverLoop, SLOT(quit())); + + config.setUser("receiver"); + config.setPassword("testpwd"); + receiver.connectToServer(config); + receiverLoop.exec(); + QCOMPARE(receiver.isConnected(), true); + + // send file + QEventLoop loop; + connect(receiverManager, SIGNAL(jobFinished(QXmppTransferJob*)), + &loop, SLOT(quit())); + QVERIFY(senderManager->sendFile("receiver@localhost/QXmpp", ":/test.svg")); + loop.exec(); + + // check received file + QFile expectedFile(":/test.svg"); + QVERIFY(expectedFile.open(QIODevice::ReadOnly)); + const QByteArray expectedData = expectedFile.readAll(); + QCOMPARE(receiverBuffer.data(), expectedData); +} + +QTEST_MAIN(tst_QXmppTransferManager) +#include "tst_qxmpptransfermanager.moc" diff --git a/tests/qxmpptransfermanager/tst_qxmpptransfermanager.qrc b/tests/qxmpptransfermanager/tst_qxmpptransfermanager.qrc new file mode 100644 index 00000000..461e9918 --- /dev/null +++ b/tests/qxmpptransfermanager/tst_qxmpptransfermanager.qrc @@ -0,0 +1,5 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>test.svg</file> +</qresource> +</RCC> diff --git a/tests/tests.pro b/tests/tests.pro index 381df555..ce0b5509 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -22,6 +22,7 @@ SUBDIRS = \ qxmppstanza \ qxmppstreamfeatures \ qxmppstunmessage \ + qxmpptransfermanager \ qxmpputils \ qxmppvcardiq \ qxmppversioniq |
