Convert tst_QSslSocket to work with Docker
Change-Id: Ifb075763e3a0c6c08677dd2ae7febbbc8e4e48a9 Reviewed-by: Ryan Chu <ryan.chu@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
parent
2412cfac51
commit
8d4e8217fd
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIClTCCAf4CCQC2xMhNhwvATDANBgkqhkiG9w0BAQQFADCBjjELMAkGA1UEChMC
|
||||||
|
UXQxGTAXBgNVBAsTEENvcmUgQW5kIE5ldHdvcmsxGzAZBgkqhkiG9w0BCQEWDG5v
|
||||||
|
Ym9keS5xdC5pbzENMAsGA1UEBxMET3NsbzENMAsGA1UECBMET3NsbzELMAkGA1UE
|
||||||
|
BhMCTk8xHDAaBgNVBAMUEyoudGVzdC1uZXQucXQubG9jYWwwHhcNMTgwNzAxMTgz
|
||||||
|
NjI3WhcNNDgwNjIzMTgzNjI3WjCBjjELMAkGA1UEChMCUXQxGTAXBgNVBAsTEENv
|
||||||
|
cmUgQW5kIE5ldHdvcmsxGzAZBgkqhkiG9w0BCQEWDG5vYm9keS5xdC5pbzENMAsG
|
||||||
|
A1UEBxMET3NsbzENMAsGA1UECBMET3NsbzELMAkGA1UEBhMCTk8xHDAaBgNVBAMU
|
||||||
|
EyoudGVzdC1uZXQucXQubG9jYWwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
|
||||||
|
AM2q22/WNMmn8cC+5EEYGeICySLmp9W6Ay6eKHr0Xxp3X3epETuPfvAuxp7rOtkS
|
||||||
|
18EMUegkUj8jw0IMEcbyHKFC/rTCaYOt93CxGBXMIChiMPAsFeYzGa/D6xzAkfcR
|
||||||
|
aJRQ+Ek3CDLXPnXfo7xpABXezYcPXAJrgsgBfWrwHdxzAgMBAAEwDQYJKoZIhvcN
|
||||||
|
AQEEBQADgYEAZu/lQPy8PXeyyYGamOVms/FZKJ48BH1y8KC3BeBU5FYnhvgG7pz8
|
||||||
|
Wz9JKvt2t/r45wQeAkNL6HnGUBhPJsHMjPHl5KktqN+db3D+FQygBeS2V1+zmC0X
|
||||||
|
UZNRE4aWiHvt1Lq+pTx89SOMOpfqWfh4qTQKiE5jC2V4DeCNQ3u7uI8=
|
||||||
|
-----END CERTIFICATE-----
|
@ -18,3 +18,10 @@ TESTDATA += certs
|
|||||||
DEFINES += SRCDIR=\\\"$$PWD/\\\"
|
DEFINES += SRCDIR=\\\"$$PWD/\\\"
|
||||||
|
|
||||||
requires(qtConfig(private_tests))
|
requires(qtConfig(private_tests))
|
||||||
|
|
||||||
|
# DOCKERTODO: it's 'linux' because it requires cyrus, which
|
||||||
|
# is linux-only for now ...
|
||||||
|
linux {
|
||||||
|
QT_TEST_SERVER_LIST = squid danted cyrus apache2 echo
|
||||||
|
include($$dirname(_QMAKE_CONF_)/tests/auto/testserver.pri)
|
||||||
|
}
|
||||||
|
@ -310,6 +310,21 @@ Q_DECLARE_METATYPE(tst_QSslSocket::PskConnectTestType)
|
|||||||
|
|
||||||
int tst_QSslSocket::loopLevel = 0;
|
int tst_QSslSocket::loopLevel = 0;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
QString httpServerCertChainPath()
|
||||||
|
{
|
||||||
|
// DOCKERTODO: note how we use CA certificate on the real server. The docker container
|
||||||
|
// is using a different cert with a "special" CN. Check if it's important!
|
||||||
|
#ifdef QT_TEST_SERVER
|
||||||
|
return tst_QSslSocket::testDataDir + QStringLiteral("certs/qt-test-server-cert.pem");
|
||||||
|
#else
|
||||||
|
return tst_QSslSocket::testDataDir + QStringLiteral("certs/qt-test-server-cacert.pem");
|
||||||
|
#endif // QT_TEST_SERVER
|
||||||
|
}
|
||||||
|
|
||||||
|
} // unnamed namespace
|
||||||
|
|
||||||
tst_QSslSocket::tst_QSslSocket()
|
tst_QSslSocket::tst_QSslSocket()
|
||||||
{
|
{
|
||||||
#ifndef QT_NO_SSL
|
#ifndef QT_NO_SSL
|
||||||
@ -363,8 +378,19 @@ void tst_QSslSocket::initTestCase()
|
|||||||
qDebug("Using SSL library %s (%ld)",
|
qDebug("Using SSL library %s (%ld)",
|
||||||
qPrintable(QSslSocket::sslLibraryVersionString()),
|
qPrintable(QSslSocket::sslLibraryVersionString()),
|
||||||
QSslSocket::sslLibraryVersionNumber());
|
QSslSocket::sslLibraryVersionNumber());
|
||||||
|
#ifdef QT_TEST_SERVER
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::socksProxyServerName(), 1080));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::socksProxyServerName(), 1081));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpProxyServerName(), 3128));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpProxyServerName(), 3129));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpProxyServerName(), 3130));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpServerName(), 443));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::imapServerName(), 993));
|
||||||
|
QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::echoServerName(), 13));
|
||||||
|
#else
|
||||||
QVERIFY(QtNetworkSettings::verifyTestNetworkSettings());
|
QVERIFY(QtNetworkSettings::verifyTestNetworkSettings());
|
||||||
#endif
|
#endif // QT_TEST_SERVER
|
||||||
|
#endif // QT_NO_SSL
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QSslSocket::init()
|
void tst_QSslSocket::init()
|
||||||
@ -373,28 +399,29 @@ void tst_QSslSocket::init()
|
|||||||
if (setProxy) {
|
if (setProxy) {
|
||||||
#ifndef QT_NO_NETWORKPROXY
|
#ifndef QT_NO_NETWORKPROXY
|
||||||
QFETCH_GLOBAL(int, proxyType);
|
QFETCH_GLOBAL(int, proxyType);
|
||||||
QString fluke = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
|
const QString socksProxyAddr = QtNetworkSettings::socksProxyServerIp().toString();
|
||||||
|
const QString httpProxyAddr = QtNetworkSettings::httpProxyServerIp().toString();
|
||||||
QNetworkProxy proxy;
|
QNetworkProxy proxy;
|
||||||
|
|
||||||
switch (proxyType) {
|
switch (proxyType) {
|
||||||
case Socks5Proxy:
|
case Socks5Proxy:
|
||||||
proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1080);
|
proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, socksProxyAddr, 1080);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Socks5Proxy | AuthBasic:
|
case Socks5Proxy | AuthBasic:
|
||||||
proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, fluke, 1081);
|
proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, socksProxyAddr, 1081);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HttpProxy | NoAuth:
|
case HttpProxy | NoAuth:
|
||||||
proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3128);
|
proxy = QNetworkProxy(QNetworkProxy::HttpProxy, httpProxyAddr, 3128);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HttpProxy | AuthBasic:
|
case HttpProxy | AuthBasic:
|
||||||
proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3129);
|
proxy = QNetworkProxy(QNetworkProxy::HttpProxy, httpProxyAddr, 3129);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HttpProxy | AuthNtlm:
|
case HttpProxy | AuthNtlm:
|
||||||
proxy = QNetworkProxy(QNetworkProxy::HttpProxy, fluke, 3130);
|
proxy = QNetworkProxy(QNetworkProxy::HttpProxy, httpProxyAddr, 3130);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
QNetworkProxy::setApplicationProxy(proxy);
|
QNetworkProxy::setApplicationProxy(proxy);
|
||||||
@ -555,7 +582,7 @@ void tst_QSslSocket::simpleConnect()
|
|||||||
connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(exitLoop()));
|
connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(exitLoop()));
|
||||||
|
|
||||||
// Start connecting
|
// Start connecting
|
||||||
socket.connectToHost(QtNetworkSettings::serverName(), 993);
|
socket.connectToHost(QtNetworkSettings::imapServerName(), 993);
|
||||||
QCOMPARE(socket.state(), QAbstractSocket::HostLookupState);
|
QCOMPARE(socket.state(), QAbstractSocket::HostLookupState);
|
||||||
enterLoop(10);
|
enterLoop(10);
|
||||||
|
|
||||||
@ -610,7 +637,7 @@ void tst_QSslSocket::simpleConnectWithIgnore()
|
|||||||
connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(exitLoop()));
|
connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(exitLoop()));
|
||||||
|
|
||||||
// Start connecting
|
// Start connecting
|
||||||
socket.connectToHost(QtNetworkSettings::serverName(), 993);
|
socket.connectToHost(QtNetworkSettings::imapServerName(), 993);
|
||||||
QVERIFY(socket.state() != QAbstractSocket::UnconnectedState); // something must be in progress
|
QVERIFY(socket.state() != QAbstractSocket::UnconnectedState); // something must be in progress
|
||||||
enterLoop(10);
|
enterLoop(10);
|
||||||
|
|
||||||
@ -642,7 +669,7 @@ void tst_QSslSocket::sslErrors_data()
|
|||||||
QString name = QtNetworkSettings::serverLocalName();
|
QString name = QtNetworkSettings::serverLocalName();
|
||||||
QTest::newRow(qPrintable(name)) << name << 993;
|
QTest::newRow(qPrintable(name)) << name << 993;
|
||||||
|
|
||||||
name = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString();
|
name = QtNetworkSettings::httpServerIp().toString();
|
||||||
QTest::newRow(qPrintable(name)) << name << 443;
|
QTest::newRow(qPrintable(name)) << name << 443;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -659,7 +686,20 @@ void tst_QSslSocket::sslErrors()
|
|||||||
QSignalSpy sslErrorsSpy(socket.data(), SIGNAL(sslErrors(QList<QSslError>)));
|
QSignalSpy sslErrorsSpy(socket.data(), SIGNAL(sslErrors(QList<QSslError>)));
|
||||||
QSignalSpy peerVerifyErrorSpy(socket.data(), SIGNAL(peerVerifyError(QSslError)));
|
QSignalSpy peerVerifyErrorSpy(socket.data(), SIGNAL(peerVerifyError(QSslError)));
|
||||||
|
|
||||||
|
#ifdef QT_TEST_SERVER
|
||||||
|
// On the old test server we had the same certificate on different services.
|
||||||
|
// The idea of this test is to fail with 'HostNameMismatch', when we're using
|
||||||
|
// either serverLocalName() or IP address directly. With Docker we connect
|
||||||
|
// to IMAP server, and we have to connect using imapServerName() and passing
|
||||||
|
// 'host' as peerVerificationName to the overload of connectToHostEncrypted().
|
||||||
|
if (port == 993) {
|
||||||
|
socket->connectToHostEncrypted(QtNetworkSettings::imapServerName(), port, host);
|
||||||
|
} else
|
||||||
|
#endif // QT_TEST_SERVER
|
||||||
|
{
|
||||||
socket->connectToHostEncrypted(host, port);
|
socket->connectToHostEncrypted(host, port);
|
||||||
|
}
|
||||||
|
|
||||||
if (!socket->waitForConnected())
|
if (!socket->waitForConnected())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
socket->waitForEncrypted(10000);
|
socket->waitForEncrypted(10000);
|
||||||
@ -739,13 +779,13 @@ void tst_QSslSocket::connectToHostEncrypted()
|
|||||||
socket->setProtocol(QSsl::SslProtocol::TlsV1_1);
|
socket->setProtocol(QSsl::SslProtocol::TlsV1_1);
|
||||||
#endif
|
#endif
|
||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
QVERIFY(socket->addCaCertificates(testDataDir + "certs/qt-test-server-cacert.pem"));
|
QVERIFY(socket->addCaCertificates(httpServerCertChainPath()));
|
||||||
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
||||||
connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)),
|
connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)),
|
||||||
this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
|
this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
|
|
||||||
// This should pass unconditionally when using fluke's CA certificate.
|
// This should pass unconditionally when using fluke's CA certificate.
|
||||||
// or use untrusted certificate workaround
|
// or use untrusted certificate workaround
|
||||||
@ -758,7 +798,7 @@ void tst_QSslSocket::connectToHostEncrypted()
|
|||||||
|
|
||||||
QCOMPARE(socket->mode(), QSslSocket::SslClientMode);
|
QCOMPARE(socket->mode(), QSslSocket::SslClientMode);
|
||||||
|
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 13);
|
socket->connectToHost(QtNetworkSettings::echoServerName(), 13);
|
||||||
|
|
||||||
QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
|
QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
|
||||||
|
|
||||||
@ -776,14 +816,18 @@ void tst_QSslSocket::connectToHostEncryptedWithVerificationPeerName()
|
|||||||
#endif
|
#endif
|
||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
|
|
||||||
socket->addCaCertificates(testDataDir + "certs/qt-test-server-cacert.pem");
|
socket->addCaCertificates(httpServerCertChainPath());
|
||||||
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
||||||
connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)),
|
connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)),
|
||||||
this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
|
this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// connect to the server with its local name, but use the full name for verification.
|
#ifdef QT_TEST_SERVER
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverLocalName(), 443, QtNetworkSettings::serverName());
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443, QtNetworkSettings::httpServerName());
|
||||||
|
#else
|
||||||
|
// Connect to the server with its local name, but use the full name for verification.
|
||||||
|
socket->connectToHostEncrypted(QtNetworkSettings::serverLocalName(), 443, QtNetworkSettings::httpServerName());
|
||||||
|
#endif
|
||||||
|
|
||||||
// This should pass unconditionally when using fluke's CA certificate.
|
// This should pass unconditionally when using fluke's CA certificate.
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
@ -805,7 +849,7 @@ void tst_QSslSocket::sessionCipher()
|
|||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
connect(socket.data(), SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||||
QVERIFY(socket->sessionCipher().isNull());
|
QVERIFY(socket->sessionCipher().isNull());
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443 /* https */);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443 /* https */);
|
||||||
QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
|
||||||
QVERIFY(socket->sessionCipher().isNull());
|
QVERIFY(socket->sessionCipher().isNull());
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
@ -840,12 +884,12 @@ void tst_QSslSocket::localCertificate()
|
|||||||
// values. This test should just run the codepath inside qsslsocket_openssl.cpp
|
// values. This test should just run the codepath inside qsslsocket_openssl.cpp
|
||||||
|
|
||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
QList<QSslCertificate> localCert = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
QList<QSslCertificate> localCert = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
socket->setCaCertificates(localCert);
|
socket->setCaCertificates(localCert);
|
||||||
socket->setLocalCertificate(testDataDir + "certs/fluke.cert");
|
socket->setLocalCertificate(testDataDir + "certs/fluke.cert");
|
||||||
socket->setPrivateKey(testDataDir + "certs/fluke.key");
|
socket->setPrivateKey(testDataDir + "certs/fluke.key");
|
||||||
|
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && !socket->waitForEncrypted(10000))
|
if (setProxy && !socket->waitForEncrypted(10000))
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
@ -868,8 +912,7 @@ void tst_QSslSocket::peerCertificateChain()
|
|||||||
|
|
||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
|
QList<QSslCertificate> caCertificates = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
QList<QSslCertificate> caCertificates = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
|
||||||
QCOMPARE(caCertificates.count(), 1);
|
QCOMPARE(caCertificates.count(), 1);
|
||||||
socket->addCaCertificates(caCertificates);
|
socket->addCaCertificates(caCertificates);
|
||||||
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
||||||
@ -877,7 +920,7 @@ void tst_QSslSocket::peerCertificateChain()
|
|||||||
this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
|
this, SLOT(untrustedWorkaroundSlot(QList<QSslError>)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
|
QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
|
||||||
QVERIFY(socket->peerCertificateChain().isEmpty());
|
QVERIFY(socket->peerCertificateChain().isEmpty());
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
@ -906,7 +949,7 @@ void tst_QSslSocket::peerCertificateChain()
|
|||||||
QVERIFY(socket->waitForDisconnected());
|
QVERIFY(socket->waitForDisconnected());
|
||||||
|
|
||||||
// now do it again back to the original server
|
// now do it again back to the original server
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
|
QCOMPARE(socket->mode(), QSslSocket::UnencryptedMode);
|
||||||
QVERIFY(socket->peerCertificateChain().isEmpty());
|
QVERIFY(socket->peerCertificateChain().isEmpty());
|
||||||
QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
|
||||||
@ -945,13 +988,13 @@ void tst_QSslSocket::privateKeyOpaque()
|
|||||||
// values. This test should just run the codepath inside qsslsocket_openssl.cpp
|
// values. This test should just run the codepath inside qsslsocket_openssl.cpp
|
||||||
|
|
||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
QList<QSslCertificate> localCert = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
QList<QSslCertificate> localCert = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
socket->setCaCertificates(localCert);
|
socket->setCaCertificates(localCert);
|
||||||
socket->setLocalCertificate(testDataDir + "certs/fluke.cert");
|
socket->setLocalCertificate(testDataDir + "certs/fluke.cert");
|
||||||
socket->setPrivateKey(QSslKey(reinterpret_cast<Qt::HANDLE>(pkey)));
|
socket->setPrivateKey(QSslKey(reinterpret_cast<Qt::HANDLE>(pkey)));
|
||||||
|
|
||||||
socket->setPeerVerifyMode(QSslSocket::QueryPeer);
|
socket->setPeerVerifyMode(QSslSocket::QueryPeer);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && !socket->waitForEncrypted(10000))
|
if (setProxy && !socket->waitForEncrypted(10000))
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
@ -965,7 +1008,7 @@ void tst_QSslSocket::protocol()
|
|||||||
|
|
||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
QList<QSslCertificate> certs = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
QList<QSslCertificate> certs = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
|
|
||||||
socket->setCaCertificates(certs);
|
socket->setCaCertificates(certs);
|
||||||
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
#ifdef QSSLSOCKET_CERTUNTRUSTED_WORKAROUND
|
||||||
@ -979,13 +1022,13 @@ void tst_QSslSocket::protocol()
|
|||||||
// qt-test-server allows TLSV1.
|
// qt-test-server allows TLSV1.
|
||||||
socket->setProtocol(QSsl::TlsV1_0);
|
socket->setProtocol(QSsl::TlsV1_0);
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_0);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_0);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_0);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_0);
|
||||||
socket->abort();
|
socket->abort();
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_0);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_0);
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
@ -998,13 +1041,13 @@ void tst_QSslSocket::protocol()
|
|||||||
// qt-test-server probably doesn't allow TLSV1.1
|
// qt-test-server probably doesn't allow TLSV1.1
|
||||||
socket->setProtocol(QSsl::TlsV1_1);
|
socket->setProtocol(QSsl::TlsV1_1);
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_1);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_1);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_1);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_1);
|
||||||
socket->abort();
|
socket->abort();
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_1);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_1);
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
@ -1016,13 +1059,13 @@ void tst_QSslSocket::protocol()
|
|||||||
// qt-test-server probably doesn't allows TLSV1.2
|
// qt-test-server probably doesn't allows TLSV1.2
|
||||||
socket->setProtocol(QSsl::TlsV1_2);
|
socket->setProtocol(QSsl::TlsV1_2);
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_2);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_2);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_2);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_2);
|
||||||
socket->abort();
|
socket->abort();
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_2);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_2);
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
@ -1036,13 +1079,13 @@ void tst_QSslSocket::protocol()
|
|||||||
// qt-test-server probably doesn't allow TLSV1.3
|
// qt-test-server probably doesn't allow TLSV1.3
|
||||||
socket->setProtocol(QSsl::TlsV1_3);
|
socket->setProtocol(QSsl::TlsV1_3);
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_3);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_3);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
QSKIP("TLS 1.3 is not supported by the test server or the test is flaky - see QTBUG-29941");
|
QSKIP("TLS 1.3 is not supported by the test server or the test is flaky - see QTBUG-29941");
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_3);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_3);
|
||||||
socket->abort();
|
socket->abort();
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1_3);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1_3);
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
@ -1055,13 +1098,13 @@ void tst_QSslSocket::protocol()
|
|||||||
// qt-test-server allows SSLV3, so it allows AnyProtocol.
|
// qt-test-server allows SSLV3, so it allows AnyProtocol.
|
||||||
socket->setProtocol(QSsl::AnyProtocol);
|
socket->setProtocol(QSsl::AnyProtocol);
|
||||||
QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
|
QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
|
QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
|
||||||
socket->abort();
|
socket->abort();
|
||||||
QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
|
QCOMPARE(socket->protocol(), QSsl::AnyProtocol);
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(), qPrintable(socket->errorString()));
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
@ -1073,13 +1116,13 @@ void tst_QSslSocket::protocol()
|
|||||||
// qt-test-server allows TlsV1, so it allows TlsV1SslV3
|
// qt-test-server allows TlsV1, so it allows TlsV1SslV3
|
||||||
socket->setProtocol(QSsl::TlsV1SslV3);
|
socket->setProtocol(QSsl::TlsV1SslV3);
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForEncrypted())
|
if (setProxy && !socket->waitForEncrypted())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
|
||||||
socket->abort();
|
socket->abort();
|
||||||
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
|
QCOMPARE(socket->protocol(), QSsl::TlsV1SslV3);
|
||||||
socket->connectToHost(QtNetworkSettings::serverName(), 443);
|
socket->connectToHost(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (setProxy && !socket->waitForConnected())
|
if (setProxy && !socket->waitForConnected())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
socket->startClientEncryption();
|
socket->startClientEncryption();
|
||||||
@ -1491,7 +1534,7 @@ void tst_QSslSocket::setSslConfiguration_data()
|
|||||||
QTest::newRow("empty") << QSslConfiguration() << false;
|
QTest::newRow("empty") << QSslConfiguration() << false;
|
||||||
QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
|
QSslConfiguration conf = QSslConfiguration::defaultConfiguration();
|
||||||
QTest::newRow("default") << conf << false; // does not contain test server cert
|
QTest::newRow("default") << conf << false; // does not contain test server cert
|
||||||
QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
QList<QSslCertificate> testServerCert = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
conf.setCaCertificates(testServerCert);
|
conf.setCaCertificates(testServerCert);
|
||||||
QTest::newRow("set-root-cert") << conf << true;
|
QTest::newRow("set-root-cert") << conf << true;
|
||||||
conf.setProtocol(QSsl::SecureProtocols);
|
conf.setProtocol(QSsl::SecureProtocols);
|
||||||
@ -1510,7 +1553,7 @@ void tst_QSslSocket::setSslConfiguration()
|
|||||||
socket->setProtocol(QSsl::SslProtocol::TlsV1_1);
|
socket->setProtocol(QSsl::SslProtocol::TlsV1_1);
|
||||||
#endif
|
#endif
|
||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QFETCH(bool, works);
|
QFETCH(bool, works);
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && (socket->waitForEncrypted(10000) != works))
|
if (setProxy && (socket->waitForEncrypted(10000) != works))
|
||||||
@ -1530,7 +1573,7 @@ void tst_QSslSocket::waitForEncrypted()
|
|||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
|
|
||||||
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
|
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && !socket->waitForEncrypted(10000))
|
if (setProxy && !socket->waitForEncrypted(10000))
|
||||||
@ -1549,7 +1592,7 @@ void tst_QSslSocket::waitForEncryptedMinusOne()
|
|||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
|
|
||||||
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
|
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && !socket->waitForEncrypted(-1))
|
if (setProxy && !socket->waitForEncrypted(-1))
|
||||||
@ -1565,7 +1608,7 @@ void tst_QSslSocket::waitForConnectedEncryptedReadyRead()
|
|||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
|
|
||||||
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
|
socket->connectToHostEncrypted(QtNetworkSettings::imapServerName(), 993);
|
||||||
|
|
||||||
QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
@ -1597,7 +1640,7 @@ void tst_QSslSocket::addDefaultCaCertificate()
|
|||||||
// Reset the global CA chain
|
// Reset the global CA chain
|
||||||
QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
|
QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
|
||||||
|
|
||||||
QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
QList<QSslCertificate> flukeCerts = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
QCOMPARE(flukeCerts.size(), 1);
|
QCOMPARE(flukeCerts.size(), 1);
|
||||||
QList<QSslCertificate> globalCerts = QSslSocket::defaultCaCertificates();
|
QList<QSslCertificate> globalCerts = QSslSocket::defaultCaCertificates();
|
||||||
QVERIFY(!globalCerts.contains(flukeCerts.first()));
|
QVERIFY(!globalCerts.contains(flukeCerts.first()));
|
||||||
@ -1968,7 +2011,7 @@ void tst_QSslSocket::setReadBufferSize_task_250027()
|
|||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
socket->setReadBufferSize(1000); // limit to 1 kb/sec
|
socket->setReadBufferSize(1000); // limit to 1 kb/sec
|
||||||
socket->ignoreSslErrors();
|
socket->ignoreSslErrors();
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
socket->ignoreSslErrors();
|
socket->ignoreSslErrors();
|
||||||
QVERIFY2(socket->waitForConnected(10*1000), qPrintable(socket->errorString()));
|
QVERIFY2(socket->waitForConnected(10*1000), qPrintable(socket->errorString()));
|
||||||
if (setProxy && !socket->waitForEncrypted(10*1000))
|
if (setProxy && !socket->waitForEncrypted(10*1000))
|
||||||
@ -1981,7 +2024,7 @@ void tst_QSslSocket::setReadBufferSize_task_250027()
|
|||||||
// provoke a response by sending a request
|
// provoke a response by sending a request
|
||||||
socket->write("GET /qtest/fluke.gif HTTP/1.0\n"); // this file is 27 KB
|
socket->write("GET /qtest/fluke.gif HTTP/1.0\n"); // this file is 27 KB
|
||||||
socket->write("Host: ");
|
socket->write("Host: ");
|
||||||
socket->write(QtNetworkSettings::serverName().toLocal8Bit().constData());
|
socket->write(QtNetworkSettings::httpServerName().toLocal8Bit().constData());
|
||||||
socket->write("\n");
|
socket->write("\n");
|
||||||
socket->write("Connection: close\n");
|
socket->write("Connection: close\n");
|
||||||
socket->write("\n");
|
socket->write("\n");
|
||||||
@ -2232,7 +2275,7 @@ void tst_QSslSocket::verifyMode()
|
|||||||
socket.setPeerVerifyMode(QSslSocket::VerifyPeer);
|
socket.setPeerVerifyMode(QSslSocket::VerifyPeer);
|
||||||
QCOMPARE(socket.peerVerifyMode(), QSslSocket::VerifyPeer);
|
QCOMPARE(socket.peerVerifyMode(), QSslSocket::VerifyPeer);
|
||||||
|
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
if (socket.waitForEncrypted())
|
if (socket.waitForEncrypted())
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
|
|
||||||
@ -2271,7 +2314,7 @@ void tst_QSslSocket::verifyDepth()
|
|||||||
void tst_QSslSocket::disconnectFromHostWhenConnecting()
|
void tst_QSslSocket::disconnectFromHostWhenConnecting()
|
||||||
{
|
{
|
||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
|
socket->connectToHostEncrypted(QtNetworkSettings::imapServerName(), 993);
|
||||||
socket->ignoreSslErrors();
|
socket->ignoreSslErrors();
|
||||||
socket->write("XXXX LOGOUT\r\n");
|
socket->write("XXXX LOGOUT\r\n");
|
||||||
QAbstractSocket::SocketState state = socket->state();
|
QAbstractSocket::SocketState state = socket->state();
|
||||||
@ -2300,7 +2343,7 @@ void tst_QSslSocket::disconnectFromHostWhenConnecting()
|
|||||||
void tst_QSslSocket::disconnectFromHostWhenConnected()
|
void tst_QSslSocket::disconnectFromHostWhenConnected()
|
||||||
{
|
{
|
||||||
QSslSocketPtr socket = newSocket();
|
QSslSocketPtr socket = newSocket();
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
|
socket->connectToHostEncrypted(QtNetworkSettings::imapServerName(), 993);
|
||||||
socket->ignoreSslErrors();
|
socket->ignoreSslErrors();
|
||||||
if (!socket->waitForEncrypted(5000))
|
if (!socket->waitForEncrypted(5000))
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
@ -2387,13 +2430,13 @@ void tst_QSslSocket::resetProxy()
|
|||||||
// make sure the connection works, and then set a nonsense proxy, and then
|
// make sure the connection works, and then set a nonsense proxy, and then
|
||||||
// make sure it does not work anymore
|
// make sure it does not work anymore
|
||||||
QSslSocket socket;
|
QSslSocket socket;
|
||||||
socket.addCaCertificates(testDataDir + "certs/qt-test-server-cacert.pem");
|
socket.addCaCertificates(httpServerCertChainPath());
|
||||||
socket.setProxy(goodProxy);
|
socket.setProxy(goodProxy);
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket.waitForConnected(10000), qPrintable(socket.errorString()));
|
QVERIFY2(socket.waitForConnected(10000), qPrintable(socket.errorString()));
|
||||||
socket.abort();
|
socket.abort();
|
||||||
socket.setProxy(badProxy);
|
socket.setProxy(badProxy);
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY(! socket.waitForConnected(10000));
|
QVERIFY(! socket.waitForConnected(10000));
|
||||||
|
|
||||||
// don't forget to login
|
// don't forget to login
|
||||||
@ -2406,13 +2449,13 @@ void tst_QSslSocket::resetProxy()
|
|||||||
// set the nonsense proxy and make sure the connection does not work,
|
// set the nonsense proxy and make sure the connection does not work,
|
||||||
// and then set the right proxy and make sure it works
|
// and then set the right proxy and make sure it works
|
||||||
QSslSocket socket2;
|
QSslSocket socket2;
|
||||||
socket2.addCaCertificates(testDataDir + "certs/qt-test-server-cacert.pem");
|
socket2.addCaCertificates(httpServerCertChainPath());
|
||||||
socket2.setProxy(badProxy);
|
socket2.setProxy(badProxy);
|
||||||
socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket2.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY(! socket2.waitForConnected(10000));
|
QVERIFY(! socket2.waitForConnected(10000));
|
||||||
socket2.abort();
|
socket2.abort();
|
||||||
socket2.setProxy(goodProxy);
|
socket2.setProxy(goodProxy);
|
||||||
socket2.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket2.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QVERIFY2(socket2.waitForConnected(10000), qPrintable(socket.errorString()));
|
QVERIFY2(socket2.waitForConnected(10000), qPrintable(socket.errorString()));
|
||||||
#endif // QT_NO_NETWORKPROXY
|
#endif // QT_NO_NETWORKPROXY
|
||||||
}
|
}
|
||||||
@ -2425,7 +2468,7 @@ void tst_QSslSocket::ignoreSslErrorsList_data()
|
|||||||
// construct the list of errors that we will get with the SSL handshake and that we will ignore
|
// construct the list of errors that we will get with the SSL handshake and that we will ignore
|
||||||
QList<QSslError> expectedSslErrors;
|
QList<QSslError> expectedSslErrors;
|
||||||
// fromPath gives us a list of certs, but it actually only contains one
|
// fromPath gives us a list of certs, but it actually only contains one
|
||||||
QList<QSslCertificate> certs = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
QList<QSslCertificate> certs = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0));
|
QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0));
|
||||||
QSslError wrongError(FLUKE_CERTIFICATE_ERROR);
|
QSslError wrongError(FLUKE_CERTIFICATE_ERROR);
|
||||||
|
|
||||||
@ -2456,7 +2499,7 @@ void tst_QSslSocket::ignoreSslErrorsList()
|
|||||||
QFETCH(int, expectedSslErrorSignalCount);
|
QFETCH(int, expectedSslErrorSignalCount);
|
||||||
QSignalSpy sslErrorsSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError)));
|
QSignalSpy sslErrorsSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError)));
|
||||||
|
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
|
|
||||||
bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
|
bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
|
||||||
if (socket.waitForEncrypted(10000) != expectEncryptionSuccess)
|
if (socket.waitForEncrypted(10000) != expectEncryptionSuccess)
|
||||||
@ -2487,7 +2530,7 @@ void tst_QSslSocket::ignoreSslErrorsListWithSlot()
|
|||||||
this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
|
this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
|
||||||
connect(&socket, SIGNAL(sslErrors(QList<QSslError>)),
|
connect(&socket, SIGNAL(sslErrors(QList<QSslError>)),
|
||||||
this, SLOT(ignoreErrorListSlot(QList<QSslError>)));
|
this, SLOT(ignoreErrorListSlot(QList<QSslError>)));
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
|
|
||||||
QFETCH(int, expectedSslErrorSignalCount);
|
QFETCH(int, expectedSslErrorSignalCount);
|
||||||
bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
|
bool expectEncryptionSuccess = (expectedSslErrorSignalCount == 0);
|
||||||
@ -2529,14 +2572,14 @@ void tst_QSslSocket::readFromClosedSocket()
|
|||||||
socket->setProtocol(QSsl::SslProtocol::TlsV1_1);
|
socket->setProtocol(QSsl::SslProtocol::TlsV1_1);
|
||||||
#endif
|
#endif
|
||||||
socket->ignoreSslErrors();
|
socket->ignoreSslErrors();
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
socket->ignoreSslErrors();
|
socket->ignoreSslErrors();
|
||||||
socket->waitForConnected();
|
socket->waitForConnected();
|
||||||
socket->waitForEncrypted();
|
socket->waitForEncrypted();
|
||||||
// provoke a response by sending a request
|
// provoke a response by sending a request
|
||||||
socket->write("GET /qtest/fluke.gif HTTP/1.1\n");
|
socket->write("GET /qtest/fluke.gif HTTP/1.1\n");
|
||||||
socket->write("Host: ");
|
socket->write("Host: ");
|
||||||
socket->write(QtNetworkSettings::serverName().toLocal8Bit().constData());
|
socket->write(QtNetworkSettings::httpServerName().toLocal8Bit().constData());
|
||||||
socket->write("\n");
|
socket->write("\n");
|
||||||
socket->write("\n");
|
socket->write("\n");
|
||||||
socket->waitForBytesWritten();
|
socket->waitForBytesWritten();
|
||||||
@ -2560,7 +2603,7 @@ void tst_QSslSocket::writeBigChunk()
|
|||||||
this->socket = socket.data();
|
this->socket = socket.data();
|
||||||
|
|
||||||
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
connect(this->socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
|
|
||||||
QByteArray data;
|
QByteArray data;
|
||||||
data.resize(1024*1024*10); // 10 MB
|
data.resize(1024*1024*10); // 10 MB
|
||||||
@ -2719,7 +2762,9 @@ void tst_QSslSocket::resume_data()
|
|||||||
QTest::newRow("DoNotIgnoreErrors") << false << QList<QSslError>() << false;
|
QTest::newRow("DoNotIgnoreErrors") << false << QList<QSslError>() << false;
|
||||||
QTest::newRow("ignoreAllErrors") << true << QList<QSslError>() << true;
|
QTest::newRow("ignoreAllErrors") << true << QList<QSslError>() << true;
|
||||||
|
|
||||||
QList<QSslCertificate> certs = QSslCertificate::fromPath(testDataDir + "certs/qt-test-server-cacert.pem");
|
// Note, httpServerCertChainPath() it's ... because we use the same certificate on
|
||||||
|
// different services. We'll be actually connecting to IMAP server.
|
||||||
|
QList<QSslCertificate> certs = QSslCertificate::fromPath(httpServerCertChainPath());
|
||||||
QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0));
|
QSslError rightError(FLUKE_CERTIFICATE_ERROR, certs.at(0));
|
||||||
QSslError wrongError(FLUKE_CERTIFICATE_ERROR);
|
QSslError wrongError(FLUKE_CERTIFICATE_ERROR);
|
||||||
errorsList.append(wrongError);
|
errorsList.append(wrongError);
|
||||||
@ -2752,7 +2797,7 @@ void tst_QSslSocket::resume()
|
|||||||
this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
|
this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
|
||||||
connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop()));
|
connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop()));
|
||||||
|
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
|
socket.connectToHostEncrypted(QtNetworkSettings::imapServerName(), 993);
|
||||||
QTestEventLoop::instance().enterLoop(10);
|
QTestEventLoop::instance().enterLoop(10);
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && QTestEventLoop::instance().timeout())
|
if (setProxy && QTestEventLoop::instance().timeout())
|
||||||
@ -3418,7 +3463,7 @@ void tst_QSslSocket::setEmptyDefaultConfiguration() // this test should be last,
|
|||||||
socket = client.data();
|
socket = client.data();
|
||||||
|
|
||||||
connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(ignoreErrorSlot()));
|
||||||
socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
|
socket->connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
QFETCH_GLOBAL(bool, setProxy);
|
QFETCH_GLOBAL(bool, setProxy);
|
||||||
if (setProxy && socket->waitForEncrypted(4000))
|
if (setProxy && socket->waitForEncrypted(4000))
|
||||||
QSKIP("Skipping flaky test - See QTBUG-29941");
|
QSKIP("Skipping flaky test - See QTBUG-29941");
|
||||||
@ -4127,7 +4172,7 @@ void tst_QSslSocket::forwardReadChannelFinished()
|
|||||||
});
|
});
|
||||||
connect(&socket, &QSslSocket::readChannelFinished,
|
connect(&socket, &QSslSocket::readChannelFinished,
|
||||||
&QTestEventLoop::instance(), &QTestEventLoop::exitLoop);
|
&QTestEventLoop::instance(), &QTestEventLoop::exitLoop);
|
||||||
socket.connectToHostEncrypted(QtNetworkSettings::serverLocalName(), 443);
|
socket.connectToHostEncrypted(QtNetworkSettings::httpServerName(), 443);
|
||||||
enterLoop(10);
|
enterLoop(10);
|
||||||
QVERIFY(readChannelFinishedSpy.count());
|
QVERIFY(readChannelFinishedSpy.count());
|
||||||
}
|
}
|
||||||
|
@ -31,4 +31,10 @@
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
service cyrus-imapd start
|
echo "tls_cert_file: /home/qt-test-server/ssl-certs/qt-test-server-cert.pem" >> /etc/imapd.conf
|
||||||
|
echo "tls_key_file: /home/qt-test-server/ssl-certs/private/qt-test-server-key.pem" >> /etc/imapd.conf
|
||||||
|
chmod +3 /home/qt-test-server/ssl-certs/private/
|
||||||
|
mkdir -m 007 -p /run/cyrus/proc
|
||||||
|
sed -i 's/#imaps\t\tcmd="imapd/imaps\t\tcmd="imapd/' /etc/cyrus.conf
|
||||||
|
|
||||||
|
service cyrus-imapd restart
|
||||||
|
@ -34,6 +34,7 @@ services:
|
|||||||
- cyrus:cyrus.${TEST_DOMAIN}
|
- cyrus:cyrus.${TEST_DOMAIN}
|
||||||
- iptables:iptables.${TEST_DOMAIN}
|
- iptables:iptables.${TEST_DOMAIN}
|
||||||
- vsftpd:vsftpd.${TEST_DOMAIN}
|
- vsftpd:vsftpd.${TEST_DOMAIN}
|
||||||
|
- echo:echo.${TEST_DOMAIN}
|
||||||
volumes:
|
volumes:
|
||||||
- ./common:/common:ro
|
- ./common:/common:ro
|
||||||
- ./squid:/service:ro
|
- ./squid:/service:ro
|
||||||
@ -96,7 +97,7 @@ services:
|
|||||||
- ./common:/common:ro
|
- ./common:/common:ro
|
||||||
- ./cyrus:/service:ro
|
- ./cyrus:/service:ro
|
||||||
entrypoint: common/startup.sh
|
entrypoint: common/startup.sh
|
||||||
command: service/cyrus.sh
|
command: [common/ssl.sh, service/cyrus.sh]
|
||||||
|
|
||||||
iptables:
|
iptables:
|
||||||
image: qt-test-server-iptables:cb7a8bd6d28602085a88c8ced7d67e28e75781e2
|
image: qt-test-server-iptables:cb7a8bd6d28602085a88c8ced7d67e28e75781e2
|
||||||
|
@ -2,5 +2,6 @@
|
|||||||
|
|
||||||
# Disabled by default, enable it.
|
# Disabled by default, enable it.
|
||||||
sed -i 's/disable\t\t= yes/disable = no/' /etc/xinetd.d/echo
|
sed -i 's/disable\t\t= yes/disable = no/' /etc/xinetd.d/echo
|
||||||
|
sed -i 's/disable\t\t= yes/disable = no/' /etc/xinetd.d/daytime
|
||||||
|
|
||||||
service xinetd restart
|
service xinetd restart
|
||||||
|
Loading…
x
Reference in New Issue
Block a user