Mercurial > trustbridge
diff ui/tests/downloadertest.cpp @ 43:5910bf9016cd
Add Downloadertest
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 14 Mar 2014 15:25:47 +0000 |
parents | |
children | c6125d73faf4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/tests/downloadertest.cpp Fri Mar 14 15:25:47 2014 +0000 @@ -0,0 +1,98 @@ +#include "downloadertest.h" +#include "downloader.h" + +#include <QTextStream> +#include <QFile> +#include "unistd.h" + +void DownloaderTest::startServer(QString additionalOptions) +{ + QFile serverConfig(serverConfigDir.path() + "/" + "hiawatha.conf"); + QFile mimeConfig(serverConfigDir.path() + "/" + "mimetype.conf"); + if (serverProc.state() == QProcess::Running) { + serverProc.close(); + } + serverConfig.open(QIODevice::WriteOnly); + mimeConfig.open(QIODevice::WriteOnly); + mimeConfig.close(); /* just an empty file */ + + QTextStream configStream(&serverConfig); + qDebug() << "Config file name: " << serverConfig.fileName(); + configStream << + "Binding { " << endl << + "Port = 44443 " << endl << + "SSLcertFile = " << SOURCE_DIR << + "/data/valid_ssl_bp_priv.pem" << endl << + "Interface = 127.0.0.1" << endl << + "}" << endl << + "Hostname = 127.0.0.1" << endl << + "WebsiteRoot = " << SOURCE_DIR << endl; + configStream.flush(); + + serverConfig.close(); + serverProc.start(); + serverProc.waitForStarted(); +} + +void DownloaderTest::initTestCase() { + QStringList arguments; + serverProc.setProgram(HIAWATHA_EXECUTABLE); + arguments << "-d" << "-c" << serverConfigDir.path(); + serverProc.setArguments(arguments); + qRegisterMetaType<Downloader::ErrorCode>("Downloader::ErrorCode"); + startServer(); + QTest::qWait(1000); /* Wait for the server to settle */ +} + +void DownloaderTest::downloaderError(const QString &message, Downloader::ErrorCode error) +{ + qDebug() << "Downloader Error: " << error << " Msg: " << message; +} + +void DownloaderTest::testNewList() +{ + QFile validCert(QString::fromLatin1(SOURCE_DIR) + + "/data/valid_ssl_bp.pem"); + validCert.open(QIODevice::ReadOnly); + + Downloader* downloader = new Downloader(this, + QString::fromLatin1("https://localhost:44443"), + validCert.readAll(), + QDateTime::currentDateTime(), // Last installed SW + QDateTime::fromString("2010", "YYYY"), + "/list-valid.txt", + "/random_2MB"); + validCert.close(); + + QSignalSpy newListAvailable(downloader, + SIGNAL(newListAvailable(const QString&, const QDateTime&))); + QSignalSpy newSoftwareAvailable(downloader, + SIGNAL(newSoftwareAvailable(const QString&, const QDateTime&))); + QSignalSpy errors(downloader, SIGNAL(error(const QString &, + Downloader::ErrorCode))); + connect(downloader, SIGNAL(error(const QString &, Downloader::ErrorCode)), + this, SLOT(downloaderError(const QString &, Downloader::ErrorCode))); + + downloader->start(); + + int waited = 0; + while (newListAvailable.count() == 0 && + errors.count() == 0 && waited < 20) { + QTest::qWait(200); + waited++; + } + QVERIFY(waited != 20); + QVERIFY(newListAvailable.count() == 1); + QVERIFY(newSoftwareAvailable.count() == 0); + QVERIFY(errors.count() == 0); + delete downloader; +} + +void DownloaderTest::cleanupTestCase() { + if (serverProc.state() == QProcess::Running) { + serverProc.close(); + } +} + +QTEST_GUILESS_MAIN (DownloaderTest); +