6.5.3 clean

This commit is contained in:
kleuter
2023-11-01 18:02:52 +01:00
parent bbe896803b
commit 7018d9e6c8
2170 changed files with 57471 additions and 43550 deletions

View File

@ -14,4 +14,5 @@ qt_internal_add_test(tst_http2
Qt::Network
Qt::NetworkPrivate
Qt::TestPrivate
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -14,6 +14,8 @@
#include "private/qtldurl_p.h"
#endif
#include <memory>
class tst_QNetworkCookieJar: public QObject
{
Q_OBJECT
@ -249,7 +251,7 @@ void tst_QNetworkCookieJar::setCookiesFromUrl()
QVERIFY2(result.contains(cookie), cookie.toRawForm());
result.removeAll(cookie);
}
QVERIFY2(result.isEmpty(), QTest::toString(result));
QVERIFY2(result.isEmpty(), std::unique_ptr<char[]>(QTest::toString(result)).get());
}
void tst_QNetworkCookieJar::cookiesForUrl_data()

View File

@ -657,6 +657,7 @@ void tst_QNetworkDiskCache::streamVersion()
QIODevice *dataDevice = cache.data(url);
QVERIFY(dataDevice != 0);
QByteArray cachedData = dataDevice->readAll();
delete dataDevice;
QCOMPARE(cachedData, data);
}
}

View File

@ -29,6 +29,7 @@ qt_internal_add_test(tst_qnetworkreply
Qt::NetworkPrivate
TESTDATA ${test_data}
QT_TEST_SERVER_LIST "vsftpd" "apache2" "ftp-proxy" "danted" "squid"
BUNDLE_ANDROID_OPENSSL_LIBS
)
add_dependencies(tst_qnetworkreply echo)

View File

@ -526,6 +526,9 @@ private Q_SLOTS:
void notFoundWithCompression_data();
void notFoundWithCompression();
void qtbug68821proxyError_data();
void qtbug68821proxyError();
// NOTE: This test must be last!
void parentingRepliesToTheApp();
private:
@ -3852,7 +3855,6 @@ void tst_QNetworkReply::ioGetFromHttpWithSocksProxy()
QVERIFY(reader.data.isEmpty());
QVERIFY(int(reply->error()) > 0);
QEXPECT_FAIL("", "QTcpSocket doesn't return enough information yet", Continue);
QCOMPARE(int(reply->error()), int(QNetworkReply::ProxyConnectionRefusedError));
QCOMPARE(authspy.size(), 0);
@ -6773,7 +6775,20 @@ void tst_QNetworkReply::getAndThenDeleteObject()
// see https://bugs.webkit.org/show_bug.cgi?id=38935
void tst_QNetworkReply::symbianOpenCDataUrlCrash()
{
QString requestUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAB3RJTUUH2AUSEgolrgBvVQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAARnQU1BAACxjwv8YQUAAAHlSURBVHja5VbNShxBEK6ZaXtnHTebQPA1gngNmfaeq+QNPIlIXkC9iQdJxJNvEHLN3VkxhxxE8gTmEhAVddXZ6Z3f9Ndriz89/sHmkBQUVVT1fB9d9c3uOERUKTunIdn3HzstxGpYBDS4wZk7TAJj/wlJ90J+jnuygqs8svSj+/rGHBos3rE18XBvfU3no7NzlJfUaY/5whAwl8Lr/WDUv4ODxTMb+P5xLExe5LmO559WqTX/MQR4WZYEAtSePS4pE0qSnuhnRUcBU5Gm2k9XljU4Z26I3NRxBrd80rj2fh+KNE0FY4xevRgTjREvPFpasAK8Xli6MUbbuKw3afAGgSBXozo5u4hkmncAlkl5wx8iMGbdyQjnCFEiEwGiosj1UQA/x2rVddiVoi+l4IxE0PTDnx+mrQBvvnx9cFz3krhVvuhzFn579/aq/n5rW8fbtTqiWhIQZEo17YBvbkxOXNVndnYpTvod7AtiuN2re0+siwcB9oH8VxxrNwQQAhzyRs30n7wTI2HIN2g2QtQwjjhJIQatOq7E8bIVCLwzpl83Lvtvl+NohWWlE8UZTWEMAGCcR77fHKhPnZF5tYie6dfdxCphACmLPM+j8bYfmTryg64kV9Vh3mV8jP0b/4wO/YUPiT/8i0MLf55lSQAAAABJRU5ErkJggg==");
QString requestUrl("data:image/"
"png;base64,"
"iVBORw0KGgoAAAANSUhEUgAAABkAAAAWCAYAAAA1vze2AAAAB3RJTUUH2AUSEgolrgBvVQAAAAl"
"wSFlzAAALEwAACxMBAJqcGAAAAARnQU1BAACxjwv8YQUAAAHlSURBVHja5VbNShxBEK6ZaXtnHT"
"ebQPA1gngNmfaeq+QNPIlIXkC9iQdJxJNvEHLN3VkxhxxE8gTmEhAVddXZ6Z3f9Ndriz89/"
"sHmkBQUVVT1fB9d9c3uOERUKTunIdn3HzstxGpYBDS4wZk7TAJj/wlJ90J+jnuygqs8svSj+/"
"rGHBos3rE18XBvfU3no7NzlJfUaY/5whAwl8Lr/WDUv4ODxTMb+P5xLExe5LmO559WqTX/"
"MQR4WZYEAtSePS4pE0qSnuhnRUcBU5Gm2k9XljU4Z26I3NRxBrd80rj2fh+"
"KNE0FY4xevRgTjREvPFpasAK8Xli6MUbbuKw3afAGgSBXozo5u4hkmncAlkl5wx8iMGbdyQjnCF"
"EiEwGiosj1UQA/x2rVddiVoi+l4IxE0PTDnx+mrQBvvnx9cFz3krhVvuhzFn579/aq/"
"n5rW8fbtTqiWhIQZEo17YBvbkxOXNVndnYpTvod7AtiuN2re0+"
"siwcB9oH8VxxrNwQQAhzyRs30n7wTI2HIN2g2QtQwjjhJIQatOq7E8bIVCLwzpl83Lvtvl+"
"NohWWlE8UZTWEMAGCcR77fHKhPnZF5tYie6dfdxCphACmLPM+j8bYfmTryg64kV9Vh3mV8jP0b/"
"4wO/YUPiT/8i0MLf55lSQAAAABJRU5ErkJggg==");
QUrl url = QUrl::fromEncoded(requestUrl.toLatin1());
QNetworkRequest req(url);
QNetworkReplyPtr reply;
@ -10081,6 +10096,48 @@ void tst_QNetworkReply::notFoundWithCompression()
QCOMPARE(reply->readAll(), expected);
}
void tst_QNetworkReply::qtbug68821proxyError_data()
{
QTest::addColumn<QString>("proxyHost");
QTest::addColumn<QString>("scheme");
QTest::addColumn<QNetworkReply::NetworkError>("error");
QTest::newRow("invalidhost+http") << "this-host-will-never-exist.qt-project.org"
<< "http" << QNetworkReply::ProxyNotFoundError;
QTest::newRow("localhost+http") << "localhost"
<< "http" << QNetworkReply::ProxyConnectionRefusedError;
#ifndef QT_NO_SSL
QTest::newRow("invalidhost+https") << "this-host-will-never-exist.qt-project.org"
<< "https" << QNetworkReply::ProxyNotFoundError;
QTest::newRow("localhost+https") << "localhost"
<< "https" << QNetworkReply::ProxyConnectionRefusedError;
#endif
}
void tst_QNetworkReply::qtbug68821proxyError()
{
QTcpServer proxyServer;
QVERIFY(proxyServer.listen());
quint16 proxyPort = proxyServer.serverPort();
proxyServer.close();
QFETCH(QString, proxyHost);
QNetworkProxy proxy(QNetworkProxy::HttpProxy, proxyHost, proxyPort);
manager.setProxy(proxy);
QFETCH(QString, scheme);
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(scheme + "://example.com")));
QSignalSpy spy(reply, &QNetworkReply::errorOccurred);
QVERIFY(spy.isValid());
QVERIFY(spy.wait(15000));
QFETCH(QNetworkReply::NetworkError, error);
QCOMPARE(spy.count(), 1);
QCOMPARE(spy.at(0).at(0), error);
}
// NOTE: This test must be last testcase in tst_qnetworkreply!
void tst_QNetworkReply::parentingRepliesToTheApp()
{

View File

@ -166,11 +166,11 @@ void tst_QNetworkRequest::rawHeaderList_data()
void tst_QNetworkRequest::rawHeaderList()
{
QFETCH(QList<QByteArray>, set);
QFETCH(const QList<QByteArray>, set);
QFETCH(QList<QByteArray>, expected);
QNetworkRequest request;
foreach (QByteArray header, set)
for (const QByteArray &header : set)
request.setRawHeader(header, "a value");
QList<QByteArray> got = request.rawHeaderList();

View File

@ -1,2 +0,0 @@
[lookup]
*

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qdnslookup
tst_qdnslookup.cpp
LIBRARIES
Qt::Network
Qt::TestPrivate
)

View File

@ -5,16 +5,23 @@
#include <QTest>
#include <QSignalSpy>
#include <QtTest/private/qpropertytesthelper_p.h>
#include <QtNetwork/QDnsLookup>
#include <QtNetwork/QHostAddress>
using namespace Qt::StringLiterals;
static const int Timeout = 15000; // 15s
class tst_QDnsLookup: public QObject
{
Q_OBJECT
const QString normalDomain = u".test.qt-project.org"_s;
const QString idnDomain = u".alqualondë.test.qt-project.org"_s;
bool usingIdnDomain = false;
bool dnsServersMustWork = false;
QString domainName(const QString &input);
QString domainNameList(const QString &input);
QStringList domainNameListAlternatives(const QString &input);
@ -24,16 +31,19 @@ public slots:
private slots:
void lookup_data();
void lookup();
void lookupIdn_data() { lookup_data(); }
void lookupIdn();
void lookupReuse();
void lookupAbortRetry();
void bindingsAndProperties();
void automatedBindings();
};
void tst_QDnsLookup::initTestCase()
{
QTest::addColumn<QString>("tld");
QTest::newRow("normal") << ".test.qt-project.org";
QTest::newRow("idn") << ".alqualond\xc3\xab.test.qt-project.org";
if (qgetenv("QTEST_ENVIRONMENT") == "ci")
dnsServersMustWork = true;
}
QString tst_QDnsLookup::domainName(const QString &input)
@ -47,15 +57,16 @@ QString tst_QDnsLookup::domainName(const QString &input)
return nodot;
}
QFETCH_GLOBAL(QString, tld);
return input + tld;
if (usingIdnDomain)
return input + idnDomain;
return input + normalDomain;
}
QString tst_QDnsLookup::domainNameList(const QString &input)
{
QStringList list = input.split(QLatin1Char(';'));
const QStringList list = input.split(QLatin1Char(';'));
QString result;
foreach (const QString &s, list) {
for (const QString &s : list) {
if (!result.isEmpty())
result += ';';
result += domainName(s);
@ -140,38 +151,6 @@ void tst_QDnsLookup::lookup_data()
QTest::newRow("txt-multi-multirr") << int(QDnsLookup::TXT) << "txt-multi-multirr" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << "Hello;World";
}
static QByteArray msgDnsLookup(QDnsLookup::Error actualError,
int expectedError,
const QString &domain,
const QString &cname,
const QString &host,
const QString &srv,
const QString &mx,
const QString &ns,
const QString &ptr,
const QString &errorString)
{
QString result;
QTextStream str(&result);
str << "Actual error: " << actualError;
if (!errorString.isEmpty())
str << " (" << errorString << ')';
str << ", expected: " << expectedError;
str << ", domain: " << domain;
if (!cname.isEmpty())
str << ", cname: " << cname;
str << ", host: " << host;
if (!srv.isEmpty())
str << " server: " << srv;
if (!mx.isEmpty())
str << " mx: " << mx;
if (!ns.isEmpty())
str << " ns: " << ns;
if (!ptr.isEmpty())
str << " ptr: " << ptr;
return result.toLocal8Bit();
}
void tst_QDnsLookup::lookup()
{
QFETCH(int, type);
@ -207,8 +186,38 @@ void tst_QDnsLookup::lookup()
QEXPECT_FAIL("", "Not yet supported on Android", Abort);
#endif
QVERIFY2(int(lookup.error()) == error,
msgDnsLookup(lookup.error(), error, domain, cname, host, srv, mx, ns, ptr, lookup.errorString()));
auto extraErrorMsg = [&] () {
QString result;
QTextStream str(&result);
str << "Actual error: " << lookup.error();
if (QString errorString = lookup.errorString(); !errorString.isEmpty())
str << " (" << errorString << ')';
str << ", expected: " << error;
str << ", domain: " << domain;
if (!cname.isEmpty())
str << ", cname: " << cname;
str << ", host: " << host;
if (!srv.isEmpty())
str << " server: " << srv;
if (!mx.isEmpty())
str << " mx: " << mx;
if (!ns.isEmpty())
str << " ns: " << ns;
if (!ptr.isEmpty())
str << " ptr: " << ptr;
return result.toLocal8Bit();
};
if (!dnsServersMustWork && (lookup.error() == QDnsLookup::ServerFailureError
|| lookup.error() == QDnsLookup::ServerRefusedError)) {
// It's not a QDnsLookup problem if the server refuses to answer the query.
// This happens for queries of type ANY through Dnsmasq, for example.
qWarning("Server refused or was unable to answer query; %s", extraErrorMsg().constData());
return;
}
QVERIFY2(int(lookup.error()) == error, extraErrorMsg());
if (error == QDnsLookup::NoError)
QVERIFY(lookup.errorString().isEmpty());
QCOMPARE(int(lookup.type()), type);
@ -291,6 +300,13 @@ void tst_QDnsLookup::lookup()
QCOMPARE(texts.join(';'), txt);
}
void tst_QDnsLookup::lookupIdn()
{
usingIdnDomain = true;
lookup();
usingIdnDomain = false;
}
void tst_QDnsLookup::lookupReuse()
{
QDnsLookup lookup;
@ -355,10 +371,6 @@ void tst_QDnsLookup::lookupAbortRetry()
void tst_QDnsLookup::bindingsAndProperties()
{
QFETCH_GLOBAL(const QString, tld);
if (tld == QStringLiteral("idn"))
return;
QDnsLookup lookup;
lookup.setType(QDnsLookup::A);
@ -399,5 +411,30 @@ void tst_QDnsLookup::bindingsAndProperties()
QCOMPARE(nameserverProp.value(), QHostAddress::Any);
}
void tst_QDnsLookup::automatedBindings()
{
QDnsLookup lookup;
QTestPrivate::testReadWritePropertyBasics(lookup, u"aaaa"_s, u"txt"_s, "name");
if (QTest::currentTestFailed()) {
qDebug("Failed property test for QDnsLookup::name");
return;
}
QTestPrivate::testReadWritePropertyBasics(lookup, QDnsLookup::AAAA, QDnsLookup::TXT, "type");
if (QTest::currentTestFailed()) {
qDebug("Failed property test for QDnsLookup::type");
return;
}
QTestPrivate::testReadWritePropertyBasics(lookup, QHostAddress{QHostAddress::Any},
QHostAddress{QHostAddress::LocalHost},
"nameserver");
if (QTest::currentTestFailed()) {
qDebug("Failed property test for QDnsLookup::nameserver");
return;
}
}
QTEST_MAIN(tst_QDnsLookup)
#include "tst_qdnslookup.moc"

View File

@ -7,9 +7,6 @@
// (except qglobal.h), or else you'll get tons of compile errors
#include <qglobal.h>
// To prevent windows system header files from re-defining min/max
#define NOMINMAX 1
#if defined(Q_OS_WIN)
# include <winsock2.h>
# include <ws2tcpip.h>
@ -46,7 +43,6 @@
#define TEST_DOMAIN ".test.qt-project.org"
class tst_QHostInfo : public QObject
{
Q_OBJECT
@ -373,7 +369,7 @@ static QStringList reverseLookupHelper(const QString &ip)
QList<QByteArray> lines;
QProcess python;
python.setProcessChannelMode(QProcess::ForwardedErrorChannel);
python.start("python", QStringList() << QString("-c") << pythonCode << ip);
python.start("python3", QStringList() << QString("-c") << pythonCode << ip);
if (python.waitForFinished()) {
if (python.exitStatus() == QProcess::NormalExit && python.exitCode() == 0)
lines = python.readAllStandardOutput().split('\n');
@ -554,24 +550,22 @@ void tst_QHostInfo::threadSafetyAsynchronousAPI()
{
const int nattempts = 10;
const int lookupsperthread = 10;
QList<QThread*> threads;
QList<LookupReceiver*> receivers;
QThread threads[nattempts];
LookupReceiver receivers[nattempts];
for (int i = 0; i < nattempts; ++i) {
QThread* thread = new QThread;
LookupReceiver* receiver = new LookupReceiver;
QThread *thread = &threads[i];
LookupReceiver *receiver = &receivers[i];
receiver->numrequests = lookupsperthread;
receivers.append(receiver);
receiver->moveToThread(thread);
connect(thread, SIGNAL(started()), receiver, SLOT(start()));
thread->start();
threads.append(thread);
}
for (int k = threads.size() - 1; k >= 0; --k)
QVERIFY(threads.at(k)->wait(60000));
foreach (LookupReceiver* receiver, receivers) {
QCOMPARE(receiver->result.error(), QHostInfo::NoError);
QCOMPARE(receiver->result.addresses().at(0).toString(), QString("192.0.2.1"));
QCOMPARE(receiver->numrequests, 0);
for (int k = nattempts - 1; k >= 0; --k)
QVERIFY(threads[k].wait(60000));
for (LookupReceiver &receiver : receivers) {
QCOMPARE(receiver.result.error(), QHostInfo::NoError);
QCOMPARE(receiver.result.addresses().at(0).toString(), QString("192.0.2.1"));
QCOMPARE(receiver.numrequests, 0);
}
}

View File

@ -71,8 +71,8 @@ void tst_QNetworkInterface::initTestCase()
void tst_QNetworkInterface::dump()
{
// This is for manual testing:
QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
foreach (const QNetworkInterface &i, allInterfaces) {
const QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
for (const QNetworkInterface &i : allInterfaces) {
QString flags;
if (i.flags() & QNetworkInterface::IsUp) flags += "Up,";
if (i.flags() & QNetworkInterface::IsRunning) flags += "Running,";

View File

@ -11,5 +11,6 @@ qt_internal_add_test(tst_qlocalsocket
QLOCALSOCKET_DEBUG
LIBRARIES
Qt::Network
Qt::TestPrivate
)
add_dependencies(tst_qlocalsocket socketprocess)

View File

@ -5,6 +5,7 @@
#include <QTest>
#include <QSignalSpy>
#include <QtTest/private/qpropertytesthelper_p.h>
#if QT_CONFIG(process)
#include <QProcess>
#endif
@ -123,6 +124,7 @@ private slots:
void verifyListenWithDescriptor_data();
void serverBindingsAndProperties();
void socketBindings();
protected slots:
void socketClosedSlot();
@ -1807,14 +1809,18 @@ void tst_QLocalSocket::serverBindingsAndProperties()
{
CrashSafeLocalServer server;
QProperty<QLocalServer::SocketOptions> sockOpts;
server.bindableSocketOptions().setBinding(Qt::makePropertyBinding(sockOpts));
sockOpts = QLocalServer::GroupAccessOption | QLocalServer::UserAccessOption;
QCOMPARE(server.socketOptions(), sockOpts.value());
QTestPrivate::testReadWritePropertyBasics(
server, QLocalServer::SocketOptions{QLocalServer::GroupAccessOption},
QLocalServer::SocketOptions{QLocalServer::OtherAccessOption}, "socketOptions");
}
sockOpts.setBinding(server.bindableSocketOptions().makeBinding());
server.setSocketOptions(QLocalServer::OtherAccessOption);
QCOMPARE(sockOpts.value(), QLocalServer::OtherAccessOption);
void tst_QLocalSocket::socketBindings()
{
QLocalSocket socket;
QTestPrivate::testReadWritePropertyBasics(
socket, QLocalSocket::SocketOptions{QLocalSocket::AbstractNamespaceOption},
QLocalSocket::SocketOptions{QLocalSocket::NoOptions}, "socketOptions");
}
QTEST_MAIN(tst_QLocalSocket)

View File

@ -127,12 +127,13 @@ void tst_QSctpSocket::bind_data()
// these ranges are guaranteed to be reserved for 'documentation purposes',
// and thus, should be unused in the real world. Not that I'm assuming the
// world is full of competent administrators, or anything.
QStringList knownBad;
knownBad << "198.51.100.1";
knownBad << "2001:0DB8::1";
foreach (const QString &badAddress, knownBad) {
const QString knownBad[] = {
"198.51.100.1",
"2001:0DB8::1",
};
for (const QString &badAddress : knownBad)
QTest::newRow(badAddress.toLatin1().constData()) << badAddress << false << QString();
}
}
// Testing bind function

View File

@ -2,8 +2,6 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <qglobal.h>
// To prevent windows system header files from re-defining min/max
#define NOMINMAX 1
#if defined(_WIN32)
#include <winsock2.h>
#else

View File

@ -4,8 +4,6 @@
#include <qglobal.h>
// To prevent windows system header files from re-defining min/max
#define NOMINMAX 1
#if defined(_WIN32)
#include <winsock2.h>
#else
@ -283,7 +281,7 @@ tst_QTcpSocket::tst_QTcpSocket()
tmpSocket = 0;
//This code relates to the socketsConstructedBeforeEventLoop test case
earlyConstructedSockets = new SocketPair;
earlyConstructedSockets = new SocketPair(this);
QVERIFY(earlyConstructedSockets->create());
earlyBytesWrittenCount = 0;
earlyReadyReadCount = 0;
@ -489,8 +487,8 @@ void tst_QTcpSocket::bind_data()
bool testIpv6 = false;
// iterate all interfaces, add all addresses on them as test data
QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
foreach (const QNetworkInterface &netinterface, interfaces) {
const QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
for (const QNetworkInterface &netinterface : interfaces) {
if (!netinterface.isValid())
continue;

View File

@ -11,4 +11,5 @@ qt_internal_add_test(tst_qasn1element
LIBRARIES
Qt::Network
Qt::NetworkPrivate
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -14,4 +14,5 @@ qt_internal_add_test(tst_qdtls
LIBRARIES
Qt::NetworkPrivate
TESTDATA ${test_data}
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -579,28 +579,36 @@ void tst_QDtls::protocolVersionMatching_data()
QTest::addColumn<QSsl::SslProtocol>("clientProtocol");
QTest::addColumn<bool>("works");
//OPENSSL_VERSION_NUMBER :
//(OPENSSL_VERSION_MAJOR<<28) | (OPENSSL_VERSION_MINOR<<20) | (OPENSSL_VERSION_PATCH<<4)
const long ossl311 = 0x30100010;
if (QSslSocket::sslLibraryVersionNumber() < ossl311) {
#if QT_DEPRECATED_SINCE(6, 3)
QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED
QTest::addRow("DtlsV1_0 <-> DtlsV1_0") << QSsl::DtlsV1_0 << QSsl::DtlsV1_0 << true;
QTest::addRow("DtlsV1_0OrLater <-> DtlsV1_0") << QSsl::DtlsV1_0OrLater << QSsl::DtlsV1_0 << true;
QTest::addRow("DtlsV1_0 <-> DtlsV1_0OrLater") << QSsl::DtlsV1_0 << QSsl::DtlsV1_0OrLater << true;
QTest::addRow("DtlsV1_0OrLater <-> DtlsV1_0OrLater") << QSsl::DtlsV1_0OrLater << QSsl::DtlsV1_0OrLater << true;
QTest::addRow("DtlsV1_0 <-> DtlsV1_0") << QSsl::DtlsV1_0 << QSsl::DtlsV1_0 << true;
QTest::addRow("DtlsV1_0OrLater <-> DtlsV1_0") << QSsl::DtlsV1_0OrLater << QSsl::DtlsV1_0 << true;
QTest::addRow("DtlsV1_0 <-> DtlsV1_0OrLater") << QSsl::DtlsV1_0 << QSsl::DtlsV1_0OrLater << true;
QTest::addRow("DtlsV1_0OrLater <-> DtlsV1_0OrLater") << QSsl::DtlsV1_0OrLater << QSsl::DtlsV1_0OrLater << true;
QT_WARNING_POP
#endif // QT_DEPRECATED_SINCE(6, 3)
}
QTest::addRow("DtlsV1_2 <-> DtlsV1_2") << QSsl::DtlsV1_2 << QSsl::DtlsV1_2 << true;
QTest::addRow("DtlsV1_2OrLater <-> DtlsV1_2") << QSsl::DtlsV1_2OrLater << QSsl::DtlsV1_2 << true;
QTest::addRow("DtlsV1_2 <-> DtlsV1_2OrLater") << QSsl::DtlsV1_2 << QSsl::DtlsV1_2OrLater << true;
QTest::addRow("DtlsV1_2OrLater <-> DtlsV1_2OrLater") << QSsl::DtlsV1_2OrLater << QSsl::DtlsV1_2OrLater << true;
if (QSslSocket::sslLibraryVersionNumber() < ossl311) {
#if QT_DEPRECATED_SINCE(6, 3)
QT_WARNING_PUSH QT_WARNING_DISABLE_DEPRECATED
QTest::addRow("DtlsV1_0 <-> DtlsV1_2") << QSsl::DtlsV1_0 << QSsl::DtlsV1_2 << false;
QTest::addRow("DtlsV1_0 <-> DtlsV1_2OrLater") << QSsl::DtlsV1_0 << QSsl::DtlsV1_2OrLater << false;
QTest::addRow("DtlsV1_2 <-> DtlsV1_0") << QSsl::DtlsV1_2 << QSsl::DtlsV1_0 << false;
QTest::addRow("DtlsV1_2OrLater <-> DtlsV1_0") << QSsl::DtlsV1_2OrLater << QSsl::DtlsV1_0 << false;
QTest::addRow("DtlsV1_0 <-> DtlsV1_2") << QSsl::DtlsV1_0 << QSsl::DtlsV1_2 << false;
QTest::addRow("DtlsV1_0 <-> DtlsV1_2OrLater") << QSsl::DtlsV1_0 << QSsl::DtlsV1_2OrLater << false;
QTest::addRow("DtlsV1_2 <-> DtlsV1_0") << QSsl::DtlsV1_2 << QSsl::DtlsV1_0 << false;
QTest::addRow("DtlsV1_2OrLater <-> DtlsV1_0") << QSsl::DtlsV1_2OrLater << QSsl::DtlsV1_0 << false;
QT_WARNING_POP
#endif // QT_DEPRECATED_SINCE(6, 3)
#endif // QT_DEPRECATED_SINCE(6, 3
}
}
void tst_QDtls::protocolVersionMatching()

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qdtlscookie
tst_qdtlscookie.cpp
LIBRARIES
Qt::NetworkPrivate
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -11,6 +11,7 @@ qt_internal_add_test(tst_qocsp
LIBRARIES
Qt::Network
Qt::NetworkPrivate
BUNDLE_ANDROID_OPENSSL_LIBS
)
qt_internal_extend_target(tst_qocsp CONDITION QT_FEATURE_openssl_linked

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qpassworddigestor
tst_qpassworddigestor.cpp
LIBRARIES
Qt::Network
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -34,4 +34,5 @@ qt_internal_add_test(tst_qsslcertificate
LIBRARIES
Qt::Network
TESTDATA ${test_data}
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -116,13 +116,13 @@ void tst_QSslCertificate::initTestCase()
isNonOpenSslTls = QSslSocket::activeBackend() != QStringLiteral("openssl");
QDir dir(testDataDir + "certificates");
QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::Readable);
const QFileInfoList fileInfoList = dir.entryInfoList(QDir::Files | QDir::Readable);
QRegularExpression rxCert(QLatin1String("^.+\\.(pem|der)$"));
QRegularExpression rxSan(QLatin1String("^(.+\\.(?:pem|der))\\.san$"));
QRegularExpression rxPubKey(QLatin1String("^(.+\\.(?:pem|der))\\.pubkey$"));
QRegularExpression rxDigest(QLatin1String("^(.+\\.(?:pem|der))\\.digest-(md5|sha1)$"));
QRegularExpressionMatch match;
foreach (QFileInfo fileInfo, fileInfoList) {
for (const QFileInfo &fileInfo : fileInfoList) {
if ((match = rxCert.match(fileInfo.fileName())).hasMatch())
certInfoList <<
CertInfo(fileInfo,

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qsslcipher
tst_qsslcipher.cpp
LIBRARIES
Qt::Network
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qssldiffiehellmanparameters
tst_qssldiffiehellmanparameters.cpp
LIBRARIES
Qt::Network
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qsslellipticcurve
tst_qsslellipticcurve.cpp
LIBRARIES
Qt::Network
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -10,4 +10,5 @@ qt_internal_add_test(tst_qsslerror
tst_qsslerror.cpp
LIBRARIES
Qt::Network
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -21,9 +21,10 @@ qt_internal_add_test(tst_qsslkey
LIBRARIES
Qt::Network
TESTDATA ${test_data}
BUNDLE_ANDROID_OPENSSL_LIBS
)
qt_internal_extend_target(tst_qsslkey CONDITION QT_FEATURE_private_tests AND QT_FEATURE_openssl_linked
qt_internal_extend_target(tst_qsslkey CONDITION QT_FEATURE_developer_build AND QT_FEATURE_openssl_linked
LIBRARIES
WrapOpenSSL::WrapOpenSSL
)
@ -31,7 +32,7 @@ qt_internal_extend_target(tst_qsslkey CONDITION QT_FEATURE_private_tests AND QT_
## Scopes:
#####################################################################
qt_internal_extend_target(tst_qsslkey CONDITION QT_FEATURE_private_tests
qt_internal_extend_target(tst_qsslkey CONDITION QT_FEATURE_developer_build
LIBRARIES
Qt::CorePrivate
Qt::NetworkPrivate

View File

@ -19,4 +19,5 @@ qt_internal_add_test(tst_qsslserver
Qt::CorePrivate
Qt::NetworkPrivate
TESTDATA ${test_data}
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -21,6 +21,7 @@ qt_internal_add_test(tst_qsslsocket
Qt::TestPrivate
TESTDATA ${test_data}
QT_TEST_SERVER_LIST "squid" "danted" "cyrus" "apache2" "echo"
BUNDLE_ANDROID_OPENSSL_LIBS
)
qt_internal_extend_target(tst_qsslsocket CONDITION QT_FEATURE_private_tests AND QT_FEATURE_openssl_linked

View File

@ -291,6 +291,7 @@ private:
QSslSocket *socket;
QList<QSslError> storedExpectedSslErrors;
bool isTestingOpenSsl = false;
bool isSecurityLevel0Required = false;
bool opensslResolved = false;
bool isTestingSecureTransport = false;
bool isTestingSchannel = false;
@ -410,6 +411,9 @@ void tst_QSslSocket::initTestCase()
flukeCertificateError = QSslError::SelfSignedCertificate;
#if QT_CONFIG(openssl)
opensslResolved = qt_auto_test_resolve_OpenSSL_symbols();
// This is where OpenSSL moved several protocols under
// non-default (0) security level (the default is 1).
isSecurityLevel0Required = OPENSSL_VERSION_NUMBER >= 0x30100010;
#else
opensslResolved = false; // Not 'unused variable' anymore.
#endif
@ -808,6 +812,10 @@ void tst_QSslSocket::simpleConnect()
if (!QSslSocket::supportsSsl())
return;
// Starting from OpenSSL v 3.1.1 deprecated protocol versions (we want to use when connecting) are not available by default.
if (isSecurityLevel0Required)
QSKIP("Testing with OpenSSL backend, but security level 0 is required for TLS v1.1 or earlier");
QFETCH_GLOBAL(bool, setProxy);
if (setProxy)
return;
@ -869,6 +877,10 @@ void tst_QSslSocket::simpleConnectWithIgnore()
if (!QSslSocket::supportsSsl())
return;
// Starting from OpenSSL v 3.1.1 deprecated protocol versions (we want to use when connecting) are not available by default.
if (isSecurityLevel0Required)
QSKIP("Testing with OpenSSL backend, but security level 0 is required for TLS v1.1 or earlier");
QFETCH_GLOBAL(bool, setProxy);
if (setProxy)
return;
@ -913,6 +925,10 @@ void tst_QSslSocket::simpleConnectWithIgnore()
void tst_QSslSocket::sslErrors_data()
{
// Starting from OpenSSL v 3.1.1 deprecated protocol versions (we want to use in 'sslErrors' test) are not available by default.
if (isSecurityLevel0Required)
QSKIP("Testing with OpenSSL backend, but security level 0 is required for TLS v1.1 or earlier");
QTest::addColumn<QString>("host");
QTest::addColumn<int>("port");
@ -1294,6 +1310,7 @@ void tst_QSslSocket::privateKey()
#if QT_CONFIG(openssl)
void tst_QSslSocket::privateKeyOpaque()
{
#ifndef OPENSSL_NO_DEPRECATED_3_0
if (!isTestingOpenSsl)
QSKIP("The active TLS backend does not support private opaque keys");
@ -1327,6 +1344,7 @@ void tst_QSslSocket::privateKeyOpaque()
QFETCH_GLOBAL(bool, setProxy);
if (setProxy && !socket->waitForEncrypted(10000))
QSKIP("Skipping flaky test - See QTBUG-29941");
#endif // OPENSSL_NO_DEPRECATED_3_0
}
#endif // Feature 'openssl'.
@ -1965,6 +1983,10 @@ void tst_QSslSocket::waitForConnectedEncryptedReadyRead()
if (!QSslSocket::supportsSsl())
return;
// Starting from OpenSSL v 3.1.1 deprecated protocol versions (we want to use here) are not available by default.
if (isSecurityLevel0Required)
QSKIP("Testing with OpenSSL backend, but security level 0 is required for TLS v1.1 or earlier");
QSslSocketPtr socket = newSocket();
this->socket = socket.data();
@ -3104,6 +3126,10 @@ void tst_QSslSocket::encryptWithoutConnecting()
void tst_QSslSocket::resume_data()
{
// Starting from OpenSSL v 3.1.1 deprecated protocol versions (we want to use in 'resume' test) are not available by default.
if (isSecurityLevel0Required)
QSKIP("Testing with OpenSSL backend, but security level 0 is required for TLS v1.1 or earlier");
QTest::addColumn<bool>("ignoreErrorsAfterPause");
QTest::addColumn<QList<QSslError> >("errorsToIgnore");
QTest::addColumn<bool>("expectSuccess");
@ -3508,6 +3534,8 @@ void tst_QSslSocket::dhServerCustomParams()
{
if (!QSslSocket::supportsSsl())
QSKIP("No SSL support");
if (!QSslSocket::isClassImplemented(QSsl::ImplementedClass::DiffieHellman))
QSKIP("The current backend doesn't support diffie hellman parameters");
QFETCH_GLOBAL(bool, setProxy);
if (setProxy)

View File

@ -16,4 +16,5 @@ qt_internal_add_test(tst_qsslsocket_onDemandCertificates_member
Qt::CorePrivate
Qt::NetworkPrivate
QT_TEST_SERVER_LIST "squid" "danted"
BUNDLE_ANDROID_OPENSSL_LIBS
)

View File

@ -16,4 +16,5 @@ qt_internal_add_test(tst_qsslsocket_onDemandCertificates_static
Qt::CorePrivate
Qt::NetworkPrivate
QT_TEST_SERVER_LIST "squid" "danted"
BUNDLE_ANDROID_OPENSSL_LIBS
)