Add test for SSL.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
21
tests/cert.pem
Normal 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
28
tests/key.pem
Normal 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
6
tests/resource.qrc
Normal file
@@ -0,0 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>key.pem</file>
|
||||
<file>cert.pem</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
Reference in New Issue
Block a user