aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-08-15 10:07:17 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-08-15 10:07:17 +0200
commitcb429d9d01b0ef34086de6234a6573ccc649582c (patch)
treee955a4a8fab7cdf09b12df65ae5353c8cc981b1e /tests
parent3231fbf9b4366005f71fcc3f00b447dda58d65fe (diff)
downloadqxmpp-cb429d9d01b0ef34086de6234a6573ccc649582c.tar.gz
add test for QXmppTransferManager
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmpptransfermanager/qxmpptransfermanager.pro4
-rw-r--r--tests/qxmpptransfermanager/test.svg86
-rw-r--r--tests/qxmpptransfermanager/tst_qxmpptransfermanager.cpp126
-rw-r--r--tests/qxmpptransfermanager/tst_qxmpptransfermanager.qrc5
-rw-r--r--tests/tests.pro1
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