diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 648de7c..521e77b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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 diff --git a/tests/TestQHttpServer.cpp b/tests/TestQHttpServer.cpp index 499ff86..765c94f 100644 --- a/tests/TestQHttpServer.cpp +++ b/tests/TestQHttpServer.cpp @@ -24,6 +24,14 @@ #include #include +#if !defined(QT_NO_SSL) +# include +# include +# include +# include +# include +#endif + #include #include @@ -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 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" diff --git a/tests/cert.pem b/tests/cert.pem new file mode 100644 index 0000000..db61c03 --- /dev/null +++ b/tests/cert.pem @@ -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----- diff --git a/tests/key.pem b/tests/key.pem new file mode 100644 index 0000000..88baf5c --- /dev/null +++ b/tests/key.pem @@ -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----- diff --git a/tests/resource.qrc b/tests/resource.qrc new file mode 100644 index 0000000..d706c3c --- /dev/null +++ b/tests/resource.qrc @@ -0,0 +1,6 @@ + + + key.pem + cert.pem + +