mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-02 07:15:27 +08:00
6.5.3 clean
This commit is contained in:
@ -14,4 +14,5 @@ qt_internal_add_test(tst_http2
|
||||
Qt::Network
|
||||
Qt::NetworkPrivate
|
||||
Qt::TestPrivate
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
Binary file not shown.
@ -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()
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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()
|
||||
{
|
||||
|
@ -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();
|
||||
|
@ -1,2 +0,0 @@
|
||||
[lookup]
|
||||
*
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qdnslookup
|
||||
tst_qdnslookup.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
Qt::TestPrivate
|
||||
)
|
||||
|
@ -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"
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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,";
|
||||
|
@ -11,5 +11,6 @@ qt_internal_add_test(tst_qlocalsocket
|
||||
QLOCALSOCKET_DEBUG
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
Qt::TestPrivate
|
||||
)
|
||||
add_dependencies(tst_qlocalsocket socketprocess)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -11,4 +11,5 @@ qt_internal_add_test(tst_qasn1element
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
Qt::NetworkPrivate
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -14,4 +14,5 @@ qt_internal_add_test(tst_qdtls
|
||||
LIBRARIES
|
||||
Qt::NetworkPrivate
|
||||
TESTDATA ${test_data}
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -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()
|
||||
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qdtlscookie
|
||||
tst_qdtlscookie.cpp
|
||||
LIBRARIES
|
||||
Qt::NetworkPrivate
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qpassworddigestor
|
||||
tst_qpassworddigestor.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -34,4 +34,5 @@ qt_internal_add_test(tst_qsslcertificate
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
TESTDATA ${test_data}
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -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,
|
||||
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qsslcipher
|
||||
tst_qsslcipher.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qssldiffiehellmanparameters
|
||||
tst_qssldiffiehellmanparameters.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qsslellipticcurve
|
||||
tst_qsslellipticcurve.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -10,4 +10,5 @@ qt_internal_add_test(tst_qsslerror
|
||||
tst_qsslerror.cpp
|
||||
LIBRARIES
|
||||
Qt::Network
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -19,4 +19,5 @@ qt_internal_add_test(tst_qsslserver
|
||||
Qt::CorePrivate
|
||||
Qt::NetworkPrivate
|
||||
TESTDATA ${test_data}
|
||||
BUNDLE_ANDROID_OPENSSL_LIBS
|
||||
)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
)
|
||||
|
@ -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
|
||||
)
|
||||
|
Reference in New Issue
Block a user