diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2017-11-14 16:00:16 +0100 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2017-11-30 08:30:42 +0000 |
commit | e1600c1a73e0594f5fbea8f7341a9552d6ae3fbb (patch) | |
tree | 4ea083e1d18503ec1e67a6cd714c9034a7270fdb /tests/auto/network/ssl/qsslsocket | |
parent | a09fc184acd0874ea9876cdb2c4b123b226d8587 (diff) |
Adapt the QSsl* tests to use the resource system
This lets the tests run on devices which previously did not have access
to the files used (WinRT, mobile devices).
Change-Id: Ibdd85862eee6ab1a7d4da87ca321ee9bc9880bfa
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'tests/auto/network/ssl/qsslsocket')
-rw-r--r-- | tests/auto/network/ssl/qsslsocket/qsslsocket.pro | 3 | ||||
-rw-r--r-- | tests/auto/network/ssl/qsslsocket/qsslsocket.qrc | 21 | ||||
-rw-r--r-- | tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 84 |
3 files changed, 66 insertions, 42 deletions
diff --git a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro index 4ccf0f24b0..5249c1aac5 100644 --- a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro +++ b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro @@ -14,6 +14,9 @@ win32 { } } +RESOURCES += \ + qsslsocket.qrc + DEFINES += SRCDIR=\\\"$$PWD/\\\" requires(qtConfig(private_tests)) diff --git a/tests/auto/network/ssl/qsslsocket/qsslsocket.qrc b/tests/auto/network/ssl/qsslsocket/qsslsocket.qrc new file mode 100644 index 0000000000..fb486c8e0b --- /dev/null +++ b/tests/auto/network/ssl/qsslsocket/qsslsocket.qrc @@ -0,0 +1,21 @@ +<RCC> + <qresource prefix="/"> + <file>certs/aspiriniks.ca.crt</file> + <file>certs/bogus-ca.crt</file> + <file>certs/bogus-ca.key</file> + <file>certs/bogus-client.crt</file> + <file>certs/bogus-client.key</file> + <file>certs/bogus-server.crt</file> + <file>certs/bogus-server.key</file> + <file>certs/ca.crt</file> + <file>certs/fake-login.live.com.key</file> + <file>certs/fake-login.live.com.pem</file> + <file>certs/fluke.cert</file> + <file>certs/fluke.key</file> + <file>certs/inter.crt</file> + <file>certs/leaf.crt</file> + <file>certs/leaf.key</file> + <file>certs/qt-test-server-cacert.pem</file> + <file>certs/xn--schufele-2za.crt</file> + </qresource> +</RCC> diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 2d5c27a57b..03a1c5ad6b 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -705,7 +705,7 @@ void tst_QSslSocket::connectToHostEncrypted() QSslSocketPtr socket = newSocket(); this->socket = socket.data(); - QVERIFY(socket->addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"))); + QVERIFY(socket->addCaCertificates(QLatin1String(":/certs/qt-test-server-cacert.pem"))); #ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(untrustedWorkaroundSlot(QList<QSslError>))); @@ -739,7 +739,7 @@ void tst_QSslSocket::connectToHostEncryptedWithVerificationPeerName() QSslSocketPtr socket = newSocket(); this->socket = socket.data(); - socket->addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + socket->addCaCertificates(QLatin1String(":/certs/qt-test-server-cacert.pem")); #ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(untrustedWorkaroundSlot(QList<QSslError>))); @@ -803,10 +803,10 @@ void tst_QSslSocket::localCertificate() // values. This test should just run the codepath inside qsslsocket_openssl.cpp QSslSocketPtr socket = newSocket(); - QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"); + QList<QSslCertificate> localCert = QSslCertificate::fromPath(":/certs/qt-test-server-cacert.pem"); socket->setCaCertificates(localCert); - socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert")); - socket->setPrivateKey(QLatin1String(SRCDIR "certs/fluke.key")); + socket->setLocalCertificate(QLatin1String(":/certs/fluke.cert")); + socket->setPrivateKey(QLatin1String(":/certs/fluke.key")); socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443); QFETCH_GLOBAL(bool, setProxy); @@ -832,7 +832,7 @@ void tst_QSslSocket::peerCertificateChain() QSslSocketPtr socket = newSocket(); this->socket = socket.data(); - QList<QSslCertificate> caCertificates = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + QList<QSslCertificate> caCertificates = QSslCertificate::fromPath(QLatin1String(":/certs/qt-test-server-cacert.pem")); QCOMPARE(caCertificates.count(), 1); socket->addCaCertificates(caCertificates); #ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND @@ -895,7 +895,7 @@ void tst_QSslSocket::privateKeyOpaque() if (!QSslSocket::supportsSsl()) return; - QFile file(SRCDIR "certs/fluke.key"); + QFile file(":/certs/fluke.key"); QVERIFY(file.open(QIODevice::ReadOnly)); QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); QVERIFY(!key.isNull()); @@ -908,9 +908,9 @@ void tst_QSslSocket::privateKeyOpaque() // values. This test should just run the codepath inside qsslsocket_openssl.cpp QSslSocketPtr socket = newSocket(); - QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"); + QList<QSslCertificate> localCert = QSslCertificate::fromPath(":/certs/qt-test-server-cacert.pem"); socket->setCaCertificates(localCert); - socket->setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert")); + socket->setLocalCertificate(QLatin1String(":/certs/fluke.cert")); socket->setPrivateKey(QSslKey(reinterpret_cast<Qt::HANDLE>(pkey))); socket->setPeerVerifyMode(QSslSocket::QueryPeer); @@ -928,7 +928,7 @@ void tst_QSslSocket::protocol() QSslSocketPtr socket = newSocket(); this->socket = socket.data(); - QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"); + QList<QSslCertificate> certs = QSslCertificate::fromPath(":/certs/qt-test-server-cacert.pem"); socket->setCaCertificates(certs); #ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND @@ -1075,8 +1075,8 @@ class SslServer : public QTcpServer { Q_OBJECT public: - SslServer(const QString &keyFile = SRCDIR "certs/fluke.key", - const QString &certFile = SRCDIR "certs/fluke.cert", + SslServer(const QString &keyFile = ":/certs/fluke.key", + const QString &certFile = ":/certs/fluke.cert", const QString &interFile = QString()) : socket(0), config(QSslConfiguration::defaultConfiguration()), @@ -1422,7 +1422,7 @@ void tst_QSslSocket::setCaCertificates() QSslSocket socket; QCOMPARE(socket.caCertificates(), QSslSocket::defaultCaCertificates()); - socket.setCaCertificates(QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem")); + socket.setCaCertificates(QSslCertificate::fromPath(":/certs/qt-test-server-cacert.pem")); QCOMPARE(socket.caCertificates().size(), 1); socket.setCaCertificates(socket.defaultCaCertificates()); QCOMPARE(socket.caCertificates(), QSslSocket::defaultCaCertificates()); @@ -1438,7 +1438,7 @@ void tst_QSslSocket::localCertificateChain() return; QSslSocket socket; - socket.setLocalCertificate(QLatin1String(SRCDIR "certs/fluke.cert")); + socket.setLocalCertificate(QLatin1String(":/certs/fluke.cert")); QSslConfiguration conf = socket.sslConfiguration(); QList<QSslCertificate> chain = conf.localCertificateChain(); @@ -1456,9 +1456,9 @@ void tst_QSslSocket::setLocalCertificateChain() if (setProxy) return; - SslServer server(QLatin1String(SRCDIR "certs/leaf.key"), - QLatin1String(SRCDIR "certs/leaf.crt"), - QLatin1String(SRCDIR "certs/inter.crt")); + SslServer server(QLatin1String(":/certs/leaf.key"), + QLatin1String(":/certs/leaf.crt"), + QLatin1String(":/certs/inter.crt")); QVERIFY(server.listen()); @@ -1524,7 +1524,7 @@ void tst_QSslSocket::setSslConfiguration_data() QTest::newRow("empty") << QSslConfiguration() << false; QSslConfiguration conf = QSslConfiguration::defaultConfiguration(); QTest::newRow("default") << conf << false; // does not contain test server cert - QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"); + QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(":/certs/qt-test-server-cacert.pem"); conf.setCaCertificates(testServerCert); QTest::newRow("set-root-cert") << conf << true; conf.setProtocol(QSsl::SecureProtocols); @@ -1622,7 +1622,7 @@ void tst_QSslSocket::addDefaultCaCertificate() // Reset the global CA chain QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates()); - QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(SRCDIR "certs/qt-test-server-cacert.pem"); + QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(":/certs/qt-test-server-cacert.pem"); QCOMPARE(flukeCerts.size(), 1); QList<QSslCertificate> globalCerts = QSslSocket::defaultCaCertificates(); QVERIFY(!globalCerts.contains(flukeCerts.first())); @@ -1734,7 +1734,7 @@ void tst_QSslSocket::isMatchingHostname() { // with normalization: (the certificate has *.SCHÄUFELE.DE as a CN) // openssl req -x509 -nodes -subj "/CN=*.SCHÄUFELE.DE" -newkey rsa:512 -keyout /dev/null -out xn--schufele-2za.crt - QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "certs/xn--schufele-2za.crt"); + QList<QSslCertificate> certs = QSslCertificate::fromPath(":/certs/xn--schufele-2za.crt"); QVERIFY(!certs.isEmpty()); QSslCertificate cert = certs.first(); @@ -1790,7 +1790,7 @@ protected: socket->ignoreSslErrors(); // Only set the certificate - QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert"); + QList<QSslCertificate> localCert = QSslCertificate::fromPath(":/certs/fluke.cert"); QVERIFY(!localCert.isEmpty()); QVERIFY(!localCert.first().isNull()); socket->setLocalCertificate(localCert.first()); @@ -2019,13 +2019,13 @@ protected: socket = new QSslSocket(this); connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot())); - QFile file(SRCDIR "certs/fluke.key"); + QFile file(":/certs/fluke.key"); QVERIFY(file.open(QIODevice::ReadOnly)); QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); QVERIFY(!key.isNull()); socket->setPrivateKey(key); - QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert"); + QList<QSslCertificate> localCert = QSslCertificate::fromPath(":/certs/fluke.cert"); QVERIFY(!localCert.isEmpty()); QVERIFY(!localCert.first().isNull()); socket->setLocalCertificate(localCert.first()); @@ -2198,8 +2198,8 @@ protected: { socket = new QSslSocket(this); - socket->setPrivateKey(SRCDIR "certs/fluke.key"); - socket->setLocalCertificate(SRCDIR "certs/fluke.cert"); + socket->setPrivateKey(":/certs/fluke.key"); + socket->setLocalCertificate(":/certs/fluke.cert"); socket->setSocketDescriptor(socketDescriptor); socket->startServerEncryption(); } @@ -2314,7 +2314,7 @@ void tst_QSslSocket::resetProxy() // make sure the connection works, and then set a nonsense proxy, and then // make sure it does not work anymore QSslSocket socket; - socket.addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + socket.addCaCertificates(QLatin1String(":/certs/qt-test-server-cacert.pem")); socket.setProxy(goodProxy); socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443); QVERIFY2(socket.waitForConnected(10000), qPrintable(socket.errorString())); @@ -2333,7 +2333,7 @@ void tst_QSslSocket::resetProxy() // set the nonsense proxy and make sure the connection does not work, // and then set the right proxy and make sure it works QSslSocket socket2; - socket2.addCaCertificates(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + socket2.addCaCertificates(QLatin1String(":/certs/qt-test-server-cacert.pem")); socket2.setProxy(badProxy); socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443); QVERIFY(! socket2.waitForConnected(10000)); @@ -2352,7 +2352,7 @@ void tst_QSslSocket::ignoreSslErrorsList_data() // construct the list of errors that we will get with the SSL handshake and that we will ignore QList<QSslError> expectedSslErrors; // fromPath gives us a list of certs, but it actually only contains one - QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(":/certs/qt-test-server-cacert.pem")); QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0)); QSslError wrongError(FLUKE_CERTIFICATE_ERROR); @@ -2525,7 +2525,7 @@ void tst_QSslSocket::blacklistedCertificates() if (setProxy) return; - SslServer server(SRCDIR "certs/fake-login.live.com.key", SRCDIR "certs/fake-login.live.com.pem"); + SslServer server(":/certs/fake-login.live.com.key", ":/certs/fake-login.live.com.pem"); QSslSocket *receiver = new QSslSocket(this); connect(receiver, SIGNAL(readyRead()), SLOT(exitLoop())); @@ -2637,7 +2637,7 @@ void tst_QSslSocket::resume_data() QTest::newRow("DoNotIgnoreErrors") << false << QList<QSslError>() << false; QTest::newRow("ignoreAllErrors") << true << QList<QSslError>() << true; - QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem")); + QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(":/certs/qt-test-server-cacert.pem")); QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0)); QSslError wrongError(FLUKE_CERTIFICATE_ERROR); errorsList.append(wrongError); @@ -2707,8 +2707,8 @@ class WebSocket : public QSslSocket Q_OBJECT public: explicit WebSocket(qintptr socketDescriptor, - const QString &keyFile = SRCDIR "certs/fluke.key", - const QString &certFile = SRCDIR "certs/fluke.cert"); + const QString &keyFile = ":/certs/fluke.key", + const QString &certFile = ":/certs/fluke.cert"); protected slots: void onReadyReadFirstBytes(void); @@ -2913,13 +2913,13 @@ void tst_QSslSocket::qtbug18498_peek2() QCOMPARE(a[2], 'S'); QCOMPARE(server->readAll(), QByteArray("TLS\r\n")); - QFile file(SRCDIR "certs/fluke.key"); + QFile file(":/certs/fluke.key"); QVERIFY(file.open(QIODevice::ReadOnly)); QSslKey key(file.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); QVERIFY(!key.isNull()); server->setPrivateKey(key); - QList<QSslCertificate> localCert = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert"); + QList<QSslCertificate> localCert = QSslCertificate::fromPath(":/certs/fluke.cert"); QVERIFY(!localCert.isEmpty()); QVERIFY(!localCert.first().isNull()); server->setLocalCertificate(localCert.first()); @@ -3113,10 +3113,10 @@ void tst_QSslSocket::verifyClientCertificate_data() QTest::newRow("NoCert:VerifyPeer") << QSslSocket::VerifyPeer << noCerts << noKey << false; // self-signed certificate - QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(SRCDIR "certs/fluke.cert"); + QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(":/certs/fluke.cert"); QCOMPARE(flukeCerts.size(), 1); - QFile flukeFile(SRCDIR "certs/fluke.key"); + QFile flukeFile(":/certs/fluke.key"); QVERIFY(flukeFile.open(QIODevice::ReadOnly)); QSslKey flukeKey(flukeFile.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); QVERIFY(!flukeKey.isNull()); @@ -3127,10 +3127,10 @@ void tst_QSslSocket::verifyClientCertificate_data() QTest::newRow("SelfSignedCert:VerifyPeer") << QSslSocket::VerifyPeer << flukeCerts << flukeKey << false; // valid certificate, but wrong usage (server certificate) - QList<QSslCertificate> serverCerts = QSslCertificate::fromPath(SRCDIR "certs/bogus-server.crt"); + QList<QSslCertificate> serverCerts = QSslCertificate::fromPath(":/certs/bogus-server.crt"); QCOMPARE(serverCerts.size(), 1); - QFile serverFile(SRCDIR "certs/bogus-server.key"); + QFile serverFile(":/certs/bogus-server.key"); QVERIFY(serverFile.open(QIODevice::ReadOnly)); QSslKey serverKey(serverFile.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); QVERIFY(!serverKey.isNull()); @@ -3141,10 +3141,10 @@ void tst_QSslSocket::verifyClientCertificate_data() QTest::newRow("ValidServerCert:VerifyPeer") << QSslSocket::VerifyPeer << serverCerts << serverKey << false; // valid certificate, correct usage (client certificate) - QList<QSslCertificate> validCerts = QSslCertificate::fromPath(SRCDIR "certs/bogus-client.crt"); + QList<QSslCertificate> validCerts = QSslCertificate::fromPath(":/certs/bogus-client.crt"); QCOMPARE(validCerts.size(), 1); - QFile validFile(SRCDIR "certs/bogus-client.key"); + QFile validFile(":/certs/bogus-client.key"); QVERIFY(validFile.open(QIODevice::ReadOnly)); QSslKey validKey(validFile.readAll(), QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); QVERIFY(!validKey.isNull()); @@ -3155,7 +3155,7 @@ void tst_QSslSocket::verifyClientCertificate_data() QTest::newRow("ValidClientCert:VerifyPeer") << QSslSocket::VerifyPeer << validCerts << validKey << true; // valid certificate, correct usage (client certificate), with chain - validCerts += QSslCertificate::fromPath(SRCDIR "certs/bogus-ca.crt"); + validCerts += QSslCertificate::fromPath(":/certs/bogus-ca.crt"); QCOMPARE(validCerts.size(), 2); QTest::newRow("ValidClientCert:AutoVerifyPeer") << QSslSocket::AutoVerifyPeer << validCerts << validKey << true; @@ -3185,7 +3185,7 @@ void tst_QSslSocket::verifyClientCertificate() QFETCH(QSslSocket::PeerVerifyMode, peerVerifyMode); SslServer server; - server.addCaCertificates = QLatin1String(SRCDIR "certs/bogus-ca.crt"); + server.addCaCertificates = QLatin1String(":/certs/bogus-ca.crt"); server.ignoreSslErrors = false; server.peerVerifyMode = peerVerifyMode; QVERIFY(server.listen()); |