Add test for SSL.

This commit is contained in:
Nathan Osman
2016-10-28 22:15:14 -07:00
parent 8ca3666112
commit 0c22530acc
5 changed files with 100 additions and 1 deletions

View File

@@ -18,8 +18,10 @@ set(TESTS
TestQObjectHandler
)
qt5_add_resources(QRC resource.qrc)
foreach(TEST ${TESTS})
add_executable(${TEST} ${TEST}.cpp)
add_executable(${TEST} ${TEST}.cpp ${QRC})
set_target_properties(${TEST} PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON

View File

@@ -24,6 +24,14 @@
#include <QTcpSocket>
#include <QTest>
#if !defined(QT_NO_SSL)
# include <QFile>
# include <QSslCertificate>
# include <QSslConfiguration>
# include <QSslKey>
# include <QSslSocket>
#endif
#include <QHttpEngine/QHttpServer>
#include <QHttpEngine/QHttpHandler>
@@ -53,6 +61,10 @@ class TestQHttpServer : public QObject
private Q_SLOTS:
void testServer();
#if !defined(QT_NO_SSL)
void testSsl();
#endif
};
void TestQHttpServer::testServer()
@@ -77,5 +89,35 @@ void TestQHttpServer::testServer()
QTRY_COMPARE(destroyedSpy.count(), 1);
}
#if !defined(QT_NO_SSL)
void TestQHttpServer::testSsl()
{
QFile keyFile(":/key.pem");
QVERIFY(keyFile.open(QIODevice::ReadOnly));
QSslKey key(&keyFile, QSsl::Rsa);
QList<QSslCertificate> certs = QSslCertificate::fromPath(":/cert.pem");
QSslConfiguration config;
config.setPrivateKey(key);
config.setLocalCertificateChain(certs);
QHttpServer server;
server.setSslConfiguration(config);
QVERIFY(server.listen(QHostAddress::LocalHost));
QSslSocket socket;
socket.setCaCertificates(certs);
socket.connectToHost(server.serverAddress(), server.serverPort());
socket.setPeerVerifyName("localhost");
QTRY_COMPARE(socket.state(), QAbstractSocket::ConnectedState);
socket.startClientEncryption();
QTRY_VERIFY(socket.isEncrypted());
}
#endif
QTEST_MAIN(TestQHttpServer)
#include "TestQHttpServer.moc"

21
tests/cert.pem Normal file
View File

@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDhTCCAm2gAwIBAgIJAMVHTW60JnDeMA0GCSqGSIb3DQEBCwUAMFkxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xNjEwMjkwNDMx
MTRaFw0yNjEwMjcwNDMxMTRaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21l
LVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV
BAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANtA
0W7jpGKwvs8w4wuiZCweYWk8RoUoMpZCqR57MK3cEX4rmyr9E79FXRwyRCDpG6/j
WLbPa0U/tyAEFDYNExUCRfXRonHgorzqEvogXXJoQNogdLoJY5BI6wmQnJIbbiiq
Sr0HBBWTwg2CBKlKg4jRjx58D+d2PYegnk/1qyCriZr/rDvdcSqTsA4CxISGRFXY
uxl5PgGjHcBXsB8raF0nDMnqs8eaYagV0j0AsAvnji1GIFjacKDAS4Nq24xNG7XC
UP1dhz+pk5r7H0eg2+JqqpVn8JK7aW7oJ3BFGmHAbOi9XmzHZ7h/EO/jKjYflI3Q
aMpbYkrz3H7JV/pX5aECAwEAAaNQME4wHQYDVR0OBBYEFJkDAw3CVPRO8KaGddeW
8XSZi8IeMB8GA1UdIwQYMBaAFJkDAw3CVPRO8KaGddeW8XSZi8IeMAwGA1UdEwQF
MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHJJKahWeNn/qigJ9HgyT/VeGnTOuYgm
yFQrj1/slg7URqZjWDQur0/7HFay/2pTSVRRkwLL0aX88rJQfvI/Vgrf3hN+YWKa
Ee8P2k/1dN9eV9MhRIkeBHVxxKbvLheMc83td8X3ri8Bj4fHRGY0ecDMUZbYnB1B
sjRIvFzo1BqiOWtWXR4O0gS3DTAKCaGUs5tOBh8GP3B8tEblD+GrlxTutJJJHiyE
zBW4pDQHurdaH3eeq++KQA50cJaTg/jYj3NPPkpOER0L/L0/MSCYlewMjFkQJDAu
8Pigv0fk0Pk0nOGMtpPMjChMhYDksCK16EprwcQi5bKkuwzI92lE2fQ=
-----END CERTIFICATE-----

28
tests/key.pem Normal file
View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDbQNFu46RisL7P
MOMLomQsHmFpPEaFKDKWQqkeezCt3BF+K5sq/RO/RV0cMkQg6Ruv41i2z2tFP7cg
BBQ2DRMVAkX10aJx4KK86hL6IF1yaEDaIHS6CWOQSOsJkJySG24oqkq9BwQVk8IN
ggSpSoOI0Y8efA/ndj2HoJ5P9asgq4ma/6w73XEqk7AOAsSEhkRV2LsZeT4Box3A
V7AfK2hdJwzJ6rPHmmGoFdI9ALAL544tRiBY2nCgwEuDatuMTRu1wlD9XYc/qZOa
+x9HoNviaqqVZ/CSu2lu6CdwRRphwGzovV5sx2e4fxDv4yo2H5SN0GjKW2JK89x+
yVf6V+WhAgMBAAECggEBALHhKokeoxV2c7fA39NmkoLAuyMXxdbuP+xsdKzIITxM
mNyWIDOGU2kQq3PezCsvNElE14qpSUxLXxTYelVH0j1vNLc0tuhQ6Xb/KRpI+8eA
EW1me40bZO2AWz/NVVmsa3kOf8hQUt32nK881u9KBuEPs192I6kT4uOQSiBxHb9I
K9AhSwcdiRWI6zF3KIlSbYzhvUO/xZSnk/03XysmgSK4KveiTBPQcFmgF70DsCDQ
H1zpJxGX7DovYbLzYOI0lGaKbSsm+YTaNYmvgyz9rU38TpM9/9Uvs2hYPiVUaB7M
xiQaPMHyI/XXpgSDW/unlKFtJT7IwUz2LsHn0ROmEUkCgYEA72YG3WWYq16DJhm8
L7zcKX8U6ET0nADxFmJgkAyWxoBXBUocK+veikPTcfkzf4bvESRiqcMVIDAGektJ
iMq+bG+1Urs+Ws4AKke+4ZK5xSKw/mL6Ie98UBy1Q1eAdg05f0yG1j+PEsQq9LpE
IKMrsLujrGe65//uTv5sQ8TRSv8CgYEA6nUoIZ6n1wJuxQKQbgJhZeKGpY4D/uV3
n3EXszL03jbcgEEGqZIVvdM1SHIfRAutJ/QE2UiiPpY0qUZHw9ZSNWNFs+HTgHjF
BuSbTxDyZu9w96CAOSTNy6PIEZapU2D+McrbP/bWhovepnz4GSFidFD3orkXDgoo
8UWrSPFX718CgYEAsFIX6kaizEz/ETfRJ+PUz+decbgf5Sq4ZoEsl8v93NO3xBiS
aTL/JBzShlZBvMKYH6sJ0/jv/VYB317GGS8iU2FvTjDEu0KQUpOnHiLgGjbz31js
28O0bpjGVIQFBG23FHA7u17ytKKw9LCf7t3fFvsMkLWRrsAMODgha0Rx1ecCgYEA
wThQHHTeKWnN0/qrAJ5hmk+3W5TQYi7GCNZxC7PA7akUy3XLgc/srwXy8YNrlO5y
g2ys2kzruNydBavv1Ms58NmhRf+kCEp/RZD9FYoH2yEVXl4djfpwx5Rwe15IqXhT
xMFDM1G/th5rHZX7+On0c5uOmcIj5+QjncMmx/Rt3c0CgYAzkauFF5ilLQ10/DNV
phWoPpxG5zyY0fe3HBh5t21SS/mVarN/PHkT8UYP4IcHXVs7Engn0tccQJ2C+Pgf
YrI7mhhOhsFMKzMbeToLtfO9H5/HW7V/nzGWMXnckr597zUSOKrT6gP1aehiFGIL
tSYDUkvuA4woUltc8cSWk/pjfQ==
-----END PRIVATE KEY-----

6
tests/resource.qrc Normal file
View File

@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file>key.pem</file>
<file>cert.pem</file>
</qresource>
</RCC>