Mercurial > trustbridge
annotate ui/tests/downloadertest.cpp @ 46:d28e2624c1d5
Reset connection before the next request.
This makes the downloader work for the first simple test.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 17 Mar 2014 10:51:47 +0000 |
parents | c6125d73faf4 |
children | 7e37c6033c81 |
rev | line source |
---|---|
43 | 1 #include "downloadertest.h" |
2 #include "downloader.h" | |
3 | |
4 #include <QTextStream> | |
5 #include <QFile> | |
6 #include "unistd.h" | |
7 | |
8 void DownloaderTest::startServer(QString additionalOptions) | |
9 { | |
10 QFile serverConfig(serverConfigDir.path() + "/" + "hiawatha.conf"); | |
11 QFile mimeConfig(serverConfigDir.path() + "/" + "mimetype.conf"); | |
12 if (serverProc.state() == QProcess::Running) { | |
13 serverProc.close(); | |
14 } | |
15 serverConfig.open(QIODevice::WriteOnly); | |
16 mimeConfig.open(QIODevice::WriteOnly); | |
17 mimeConfig.close(); /* just an empty file */ | |
18 | |
19 QTextStream configStream(&serverConfig); | |
20 qDebug() << "Config file name: " << serverConfig.fileName(); | |
21 configStream << | |
22 "Binding { " << endl << | |
23 "Port = 44443 " << endl << | |
24 "SSLcertFile = " << SOURCE_DIR << | |
25 "/data/valid_ssl_bp_priv.pem" << endl << | |
26 "Interface = 127.0.0.1" << endl << | |
27 "}" << endl << | |
28 "Hostname = 127.0.0.1" << endl << | |
46
d28e2624c1d5
Reset connection before the next request.
Andre Heinecke <aheinecke@intevation.de>
parents:
45
diff
changeset
|
29 "WebsiteRoot = " << SOURCE_DIR << "/data" << endl; |
43 | 30 configStream.flush(); |
31 | |
32 serverConfig.close(); | |
33 serverProc.start(); | |
34 serverProc.waitForStarted(); | |
35 } | |
36 | |
37 void DownloaderTest::initTestCase() { | |
38 QStringList arguments; | |
39 serverProc.setProgram(HIAWATHA_EXECUTABLE); | |
40 arguments << "-d" << "-c" << serverConfigDir.path(); | |
41 serverProc.setArguments(arguments); | |
45
c6125d73faf4
Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents:
43
diff
changeset
|
42 qRegisterMetaType<SSLConnection::ErrorCode>("SSLConnection::ErrorCode"); |
43 | 43 startServer(); |
44 QTest::qWait(1000); /* Wait for the server to settle */ | |
45 } | |
46 | |
45
c6125d73faf4
Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents:
43
diff
changeset
|
47 void DownloaderTest::downloaderError(const QString &message, SSLConnection::ErrorCode error) |
43 | 48 { |
49 qDebug() << "Downloader Error: " << error << " Msg: " << message; | |
50 } | |
51 | |
52 void DownloaderTest::testNewList() | |
53 { | |
54 QFile validCert(QString::fromLatin1(SOURCE_DIR) + | |
55 "/data/valid_ssl_bp.pem"); | |
56 validCert.open(QIODevice::ReadOnly); | |
57 | |
58 Downloader* downloader = new Downloader(this, | |
59 QString::fromLatin1("https://localhost:44443"), | |
60 validCert.readAll(), | |
61 QDateTime::currentDateTime(), // Last installed SW | |
62 QDateTime::fromString("2010", "YYYY"), | |
46
d28e2624c1d5
Reset connection before the next request.
Andre Heinecke <aheinecke@intevation.de>
parents:
45
diff
changeset
|
63 "/random_2MB", |
d28e2624c1d5
Reset connection before the next request.
Andre Heinecke <aheinecke@intevation.de>
parents:
45
diff
changeset
|
64 "/list-valid.txt"); |
43 | 65 validCert.close(); |
66 | |
67 QSignalSpy newListAvailable(downloader, | |
68 SIGNAL(newListAvailable(const QString&, const QDateTime&))); | |
69 QSignalSpy newSoftwareAvailable(downloader, | |
70 SIGNAL(newSoftwareAvailable(const QString&, const QDateTime&))); | |
71 QSignalSpy errors(downloader, SIGNAL(error(const QString &, | |
45
c6125d73faf4
Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents:
43
diff
changeset
|
72 SSLConnection::ErrorCode))); |
c6125d73faf4
Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents:
43
diff
changeset
|
73 connect(downloader, SIGNAL(error(const QString &, SSLConnection::ErrorCode)), |
c6125d73faf4
Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents:
43
diff
changeset
|
74 this, SLOT(downloaderError(const QString &, SSLConnection::ErrorCode))); |
43 | 75 |
76 downloader->start(); | |
77 | |
78 int waited = 0; | |
79 while (newListAvailable.count() == 0 && | |
80 errors.count() == 0 && waited < 20) { | |
46
d28e2624c1d5
Reset connection before the next request.
Andre Heinecke <aheinecke@intevation.de>
parents:
45
diff
changeset
|
81 QTest::qWait(2000); |
43 | 82 waited++; |
83 } | |
84 QVERIFY(waited != 20); | |
85 QVERIFY(newListAvailable.count() == 1); | |
86 QVERIFY(newSoftwareAvailable.count() == 0); | |
87 QVERIFY(errors.count() == 0); | |
88 delete downloader; | |
89 } | |
90 | |
91 void DownloaderTest::cleanupTestCase() { | |
92 if (serverProc.state() == QProcess::Running) { | |
93 serverProc.close(); | |
94 } | |
95 } | |
96 | |
97 QTEST_GUILESS_MAIN (DownloaderTest); | |
98 |