annotate ui/tests/downloadertest.cpp @ 856:797aa8d9c785

(issue48) Fallback to HKEY_USERS on hive load failure If the hive can not be loaded it might mean that the user is currently logged on. In that case we can access his registry via HKEY_USERS.
author Andre Heinecke <andre.heinecke@intevation.de>
date Thu, 31 Jul 2014 12:56:26 +0200
parents 17e1c8f37d72
children eaed02defe6a
rev   line source
404
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
1 /* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
2 * Software engineering by Intevation GmbH
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
3 *
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
4 * This file is Free Software under the GNU GPL (v>=2)
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY!
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
6 * See LICENSE.txt for details.
17e1c8f37d72 Add License
Andre Heinecke <aheinecke@intevation.de>
parents: 240
diff changeset
7 */
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
8 #include "downloadertest.h"
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
9 #include "downloader.h"
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
10 #include "common.h"
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
11
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
12 #include <QTextStream>
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
13 #include <QFile>
48
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
14 #include <QVariant>
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
15 #include <unistd.h>
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
16
51
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
17 #define MAX_WAIT 20
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
18
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
19 #define SETUP_SPY \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
20 QSignalSpy newListAvailable(downloader, \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
21 SIGNAL(newListAvailable(const QString&, const QDateTime&))); \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
22 QSignalSpy newSoftwareAvailable(downloader, \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
23 SIGNAL(newSoftwareAvailable(const QString&, const QDateTime&))); \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
24 QSignalSpy errors(downloader, SIGNAL(error(const QString &, \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
25 SSLConnection::ErrorCode))); \
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
26
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
27 void DownloaderTest::startServer(QString additionalOptions)
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
28 {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
29 QFile serverConfig(serverConfigDir.path() + "/" + "hiawatha.conf");
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
30 QFile mimeConfig(serverConfigDir.path() + "/" + "mimetype.conf");
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 if (serverProc.state() == QProcess::Running) {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
32 serverProc.close();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
33 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
34 serverConfig.open(QIODevice::WriteOnly);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
35 mimeConfig.open(QIODevice::WriteOnly);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
36 mimeConfig.close(); /* just an empty file */
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
37
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
38 QTextStream configStream(&serverConfig);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
39 configStream <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
40 "Binding { " << endl <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
41 "Port = 44443 " << endl <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
42 "SSLcertFile = " << SOURCE_DIR <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
43 "/data/valid_ssl_bp_priv.pem" << endl <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
44 "Interface = 127.0.0.1" << endl <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 "}" << endl <<
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
46 "Hostname = 127.0.0.1" << endl <<
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
47 "WebsiteRoot = " << serverConfigDir.path() << endl;
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
48 configStream.flush();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
49
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
50 serverConfig.close();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
51 serverProc.start();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
52 serverProc.waitForStarted();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
53 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
54
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
55 void DownloaderTest::initTestCase() {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
56 QStringList arguments;
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
57 serverProc.setProgram(HIAWATHA_EXECUTABLE);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
58 arguments << "-d" << "-c" << serverConfigDir.path();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
59 serverProc.setArguments(arguments);
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 43
diff changeset
60 qRegisterMetaType<SSLConnection::ErrorCode>("SSLConnection::ErrorCode");
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
61 startServer();
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
62 garbageInfo = QFileInfo(getRandomDataFile(2 * 1024, serverConfigDir.path()));
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
63 QVERIFY(QFile::copy(QString::fromLocal8Bit(SOURCE_DIR"/data/list-valid.txt"),
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
64 serverConfigDir.path() + "/" + "list-valid.txt"));
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
65
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
66 QTest::qWait(1000); /* Wait for the server to settle */
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
67 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
68
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 43
diff changeset
69 void DownloaderTest::downloaderError(const QString &message, SSLConnection::ErrorCode error)
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
70 {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
71 qDebug() << "Downloader Error: " << error << " Msg: " << message;
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
72 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
73
47
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
74 bool filesEqual(QString filename1, QString filename2)
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
75 {
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
76 bool retval = false;
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
77 QFile file1(filename1);
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
78 QFile file2(filename2);
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
79 file1.open(QIODevice::ReadOnly);
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
80 file2.open(QIODevice::ReadOnly);
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
81
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
82 retval = (file1.readAll() == file2.readAll());
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
83 file1.close();
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
84 file2.close();
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
85 return retval;
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
86 }
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
87
52
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
88 void DownloaderTest::testOtherCertificate()
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
89 {
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
90 QFile otherCert(QString::fromLatin1(SOURCE_DIR) +
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
91 "/data/valid_ssl_rsa.pem");
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
92 otherCert.open(QIODevice::ReadOnly);
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
93
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
94 QFileInfo fi(getRandomDataFile(200));
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
95
52
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
96 Downloader* downloader = new Downloader(this,
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
97 QString::fromLatin1("https://localhost:44443"),
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
98 otherCert.readAll(),
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
99 QDateTime::currentDateTime(), // Last installed SW
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
100 QDateTime::fromString("2010", "YYYY"),
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
101 "/" + garbageInfo.fileName(),
52
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
102 "/list-valid.txt");
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
103 otherCert.close();
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
104
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
105 SETUP_SPY
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
106
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
107 downloader->start();
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
108
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
109 int waited = 0;
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
110 while (errors.count() == 0 && waited < MAX_WAIT) {
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
111 QTest::qWait(200);
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
112 waited++;
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
113 }
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
114 QVERIFY(waited != MAX_WAIT);
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
115 QVERIFY(newListAvailable.count() == 0);
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
116 QVERIFY(newSoftwareAvailable.count() == 0);
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
117
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
118 QList<QVariant> arguments = errors.takeFirst();
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
119
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
120 int error = arguments.at(1).toInt();
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
121
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
122 QVERIFY(error == SSLConnection::InvalidCertificate);
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
123 }
d73a2f0170d4 Add test for another certificate
Andre Heinecke <aheinecke@intevation.de>
parents: 51
diff changeset
124
48
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
125 void DownloaderTest::testNoConnection()
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
126 {
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
127 Downloader* downloader = new Downloader(this,
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
128 QString::fromLatin1("https://foobar.intevation.de"));
51
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
129
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
130 SETUP_SPY
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
131
48
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
132 downloader->start();
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
133
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
134 int waited = 0;
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
135 while (newListAvailable.count() == 0 &&
51
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
136 errors.count() == 0 && waited < MAX_WAIT) {
48
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
137 QTest::qWait(200);
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
138 waited++;
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
139 }
51
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
140 QVERIFY(waited != MAX_WAIT);
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
141 QVERIFY(newListAvailable.count() == 0);
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
142 QVERIFY(newSoftwareAvailable.count() == 0);
48
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
143
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
144 QList<QVariant> arguments = errors.takeFirst();
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
145
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
146 int error = arguments.at(1).toInt();
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
147
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
148 QVERIFY(error == SSLConnection::NoConnection);
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
149 }
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
150
55
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
151 void DownloaderTest::testNewSoftware()
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
152 {
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
153 QFile validCert(QString::fromLatin1(SOURCE_DIR) +
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
154 "/data/valid_ssl_bp.pem");
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
155 validCert.open(QIODevice::ReadOnly);
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
156
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
157 Downloader* downloader = new Downloader(this,
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
158 QString::fromLatin1("https://localhost:44443"),
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
159 validCert.readAll(),
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
160 QDateTime::fromString("2010", "YYYY"),
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
161 QDateTime::currentDateTime(),
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
162 "/" + garbageInfo.fileName(),
55
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
163 "/list-valid.txt");
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
164 validCert.close();
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
165
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
166 SETUP_SPY
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
167
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
168 connect(downloader, SIGNAL(error(const QString &, SSLConnection::ErrorCode)),
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
169 this, SLOT(downloaderError(const QString &, SSLConnection::ErrorCode)));
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
170
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
171 downloader->start();
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
172
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
173 int waited = 0;
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
174 while (newSoftwareAvailable.count() == 0 &&
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
175 errors.count() == 0 && waited < 20) {
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
176 QTest::qWait(200);
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
177 waited++;
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
178 }
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
179 QVERIFY(waited != 20);
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
180 QVERIFY(newListAvailable.count() == 0);
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
181 QVERIFY(newSoftwareAvailable.count() == 1);
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
182 QVERIFY(errors.count() == 0);
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
183
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
184 QList<QVariant> arguments = newSoftwareAvailable.takeFirst();
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
185
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
186 QVERIFY(filesEqual(serverConfigDir.path() + "/" + garbageInfo.fileName(),
55
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
187 arguments.at(0).toString()));
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
188
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
189 delete downloader;
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
190 }
64200b011dfd Add test for software download
Andre Heinecke <aheinecke@intevation.de>
parents: 52
diff changeset
191
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
192 void DownloaderTest::testNewList()
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
193 {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
194 QFile validCert(QString::fromLatin1(SOURCE_DIR) +
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
195 "/data/valid_ssl_bp.pem");
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
196 validCert.open(QIODevice::ReadOnly);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
197
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
198 Downloader* downloader = new Downloader(this,
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
199 QString::fromLatin1("https://localhost:44443"),
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
200 validCert.readAll(),
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
201 QDateTime::currentDateTime(), // Last installed SW
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
202 QDateTime::fromString("2010", "YYYY"),
240
c05e126b0b9e Fix downloadertest and factor out generating file input.
Andre Heinecke <aheinecke@intevation.de>
parents: 55
diff changeset
203 "/" + garbageInfo.fileName(),
46
d28e2624c1d5 Reset connection before the next request.
Andre Heinecke <aheinecke@intevation.de>
parents: 45
diff changeset
204 "/list-valid.txt");
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
205 validCert.close();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
206
51
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
207 SETUP_SPY
78633b2b580c Add macro for common signal setup tasks
Andre Heinecke <aheinecke@intevation.de>
parents: 50
diff changeset
208
45
c6125d73faf4 Move SSLConnection into it's own class
Andre Heinecke <aheinecke@intevation.de>
parents: 43
diff changeset
209 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
210 this, SLOT(downloaderError(const QString &, SSLConnection::ErrorCode)));
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
211
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
212 downloader->start();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
213
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
214 int waited = 0;
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
215 while (newListAvailable.count() == 0 &&
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
216 errors.count() == 0 && waited < 20) {
48
3f8c2d46ded6 Add test for no connection handling
Andre Heinecke <aheinecke@intevation.de>
parents: 47
diff changeset
217 QTest::qWait(200);
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
218 waited++;
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
219 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
220 QVERIFY(waited != 20);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
221 QVERIFY(newListAvailable.count() == 1);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
222 QVERIFY(newSoftwareAvailable.count() == 0);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
223 QVERIFY(errors.count() == 0);
47
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
224
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
225 QList<QVariant> arguments = newListAvailable.takeFirst();
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
226
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
227 QVERIFY(filesEqual(QString::fromLatin1(SOURCE_DIR) + "/data/list-valid.txt",
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
228 arguments.at(0).toString()));
7e37c6033c81 Verify that the downloaded file matches the served one
Andre Heinecke <aheinecke@intevation.de>
parents: 46
diff changeset
229
43
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
230 delete downloader;
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
231 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
232
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
233 void DownloaderTest::cleanupTestCase() {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
234 if (serverProc.state() == QProcess::Running) {
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
235 serverProc.close();
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
236 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
237 }
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
238
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
239 QTEST_GUILESS_MAIN (DownloaderTest);
5910bf9016cd Add Downloadertest
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
240

http://wald.intevation.org/projects/trustbridge/