From 006c5a7d733437be021037fca6142b005dda4c4c Mon Sep 17 00:00:00 2001 From: Jo Asplin Date: Tue, 1 Nov 2011 14:04:01 +0100 Subject: Moved tests into network/ssl/ This commit moves qsslsocket_onDemandCertificates_member and qsslsocket_onDemandCertificates_static from tests/auto/ to tests/auto/network/ssl/. Change-Id: I1593e113016ce7bb7dffbee82f1196275784d0ac Reviewed-by: Holger Ihrig Reviewed-by: Jason McDonald --- .../qsslsocket_onDemandCertificates_member.pro | 24 +++ .../tst_qsslsocket_onDemandCertificates_member.cpp | 228 ++++++++++++++++++++ .../qsslsocket_onDemandCertificates_static.pro | 24 +++ .../tst_qsslsocket_onDemandCertificates_static.cpp | 234 +++++++++++++++++++++ tests/auto/network/ssl/ssl.pro | 5 +- .../qsslsocket_onDemandCertificates_member.pro | 24 --- .../tst_qsslsocket_onDemandCertificates_member.cpp | 228 -------------------- .../qsslsocket_onDemandCertificates_static.pro | 24 --- .../tst_qsslsocket_onDemandCertificates_static.cpp | 234 --------------------- 9 files changed, 513 insertions(+), 512 deletions(-) create mode 100644 tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro create mode 100644 tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp create mode 100644 tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro create mode 100644 tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp delete mode 100644 tests/auto/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro delete mode 100644 tests/auto/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp delete mode 100644 tests/auto/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro delete mode 100644 tests/auto/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp (limited to 'tests/auto') diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro new file mode 100644 index 0000000000..33b55b4638 --- /dev/null +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro @@ -0,0 +1,24 @@ +CONFIG += testcase + +SOURCES += tst_qsslsocket_onDemandCertificates_member.cpp +!wince*:win32:LIBS += -lws2_32 +QT += core-private network-private testlib +QT -= gui + +TARGET = tst_qsslsocket_onDemandCertificates_member + +win32 { + CONFIG(debug, debug|release) { + DESTDIR = debug +} else { + DESTDIR = release + } +} + +wince* { + DEFINES += SRCDIR=\\\"./\\\" +} else { + DEFINES += SRCDIR=\\\"$$PWD/\\\" +} + +requires(contains(QT_CONFIG,private_tests)) diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp new file mode 100644 index 0000000000..881ec36d4c --- /dev/null +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp @@ -0,0 +1,228 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include +#include + +#include +#include + +#include "private/qhostinfo_p.h" + +#include "../../../network-settings.h" + +#ifndef QT_NO_OPENSSL +class QSslSocketPtr: public QSharedPointer +{ +public: + inline QSslSocketPtr(QSslSocket *ptr = 0) + : QSharedPointer(ptr) + { } + + inline operator QSslSocket *() const { return data(); } +}; +#endif + +class tst_QSslSocket_onDemandCertificates_member : public QObject +{ + Q_OBJECT + + int proxyAuthCalled; + +public: + tst_QSslSocket_onDemandCertificates_member(); + virtual ~tst_QSslSocket_onDemandCertificates_member(); + +#ifndef QT_NO_OPENSSL + QSslSocketPtr newSocket(); +#endif + +public slots: + void initTestCase_data(); + void init(); + void cleanup(); + void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth); + +#ifndef QT_NO_OPENSSL +private slots: + void onDemandRootCertLoadingMemberMethods(); + +private: + QSslSocket *socket; +#endif // QT_NO_OPENSSL +}; + +tst_QSslSocket_onDemandCertificates_member::tst_QSslSocket_onDemandCertificates_member() +{ +} + +tst_QSslSocket_onDemandCertificates_member::~tst_QSslSocket_onDemandCertificates_member() +{ +} + +enum ProxyTests { + NoProxy = 0x00, + Socks5Proxy = 0x01, + HttpProxy = 0x02, + TypeMask = 0x0f, + + NoAuth = 0x00, + AuthBasic = 0x10, + AuthNtlm = 0x20, + AuthMask = 0xf0 +}; + +void tst_QSslSocket_onDemandCertificates_member::initTestCase_data() +{ + QTest::addColumn("setProxy"); + QTest::addColumn("proxyType"); + + QTest::newRow("WithoutProxy") << false << 0; + QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy); + QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic); + + QTest::newRow("WithHttpProxy") << true << int(HttpProxy); + QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic); + // uncomment the line below when NTLM works +// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm); +} + +void tst_QSslSocket_onDemandCertificates_member::init() +{ + QFETCH_GLOBAL(bool, setProxy); + if (setProxy) { + QFETCH_GLOBAL(int, proxyType); + QString testServer = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(); + QNetworkProxy proxy; + + switch (proxyType) { + case Socks5Proxy: + proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1080); + break; + + case Socks5Proxy | AuthBasic: + proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1081); + break; + + case HttpProxy | NoAuth: + proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3128); + break; + + case HttpProxy | AuthBasic: + proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3129); + break; + + case HttpProxy | AuthNtlm: + proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3130); + break; + } + QNetworkProxy::setApplicationProxy(proxy); + } + + qt_qhostinfo_clear_cache(); +} + +void tst_QSslSocket_onDemandCertificates_member::cleanup() +{ + QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy); +} + +#ifndef QT_NO_OPENSSL +QSslSocketPtr tst_QSslSocket_onDemandCertificates_member::newSocket() +{ + QSslSocket *socket = new QSslSocket; + + proxyAuthCalled = 0; + connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), + SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), + Qt::DirectConnection); + + return QSslSocketPtr(socket); +} +#endif + +void tst_QSslSocket_onDemandCertificates_member::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth) +{ + ++proxyAuthCalled; + auth->setUser("qsockstest"); + auth->setPassword("password"); +} + +#ifndef QT_NO_OPENSSL + +void tst_QSslSocket_onDemandCertificates_member::onDemandRootCertLoadingMemberMethods() +{ + QString host("qt.nokia.com"); + + // not using any root certs -> should not work + QSslSocketPtr socket2 = newSocket(); + this->socket = socket2; + socket2->setCaCertificates(QList()); + socket2->connectToHostEncrypted(host, 443); + QVERIFY(!socket2->waitForEncrypted()); + + // default: using on demand loading -> should work + QSslSocketPtr socket = newSocket(); + this->socket = socket; + socket->connectToHostEncrypted(host, 443); + QEXPECT_FAIL("", "QTBUG-20983 fails", Abort); + QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString())); + + // not using any root certs again -> should not work + QSslSocketPtr socket3 = newSocket(); + this->socket = socket3; + socket3->setCaCertificates(QList()); + socket3->connectToHostEncrypted(host, 443); + QVERIFY(!socket3->waitForEncrypted()); + + // setting empty SSL configuration explicitly -> should not work + QSslSocketPtr socket4 = newSocket(); + this->socket = socket4; + socket4->setSslConfiguration(QSslConfiguration()); + socket4->connectToHostEncrypted(host, 443); + QVERIFY(!socket4->waitForEncrypted()); +} + +#endif // QT_NO_OPENSSL + +QTEST_MAIN(tst_QSslSocket_onDemandCertificates_member) +#include "tst_qsslsocket_onDemandCertificates_member.moc" diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro new file mode 100644 index 0000000000..8a500a3d99 --- /dev/null +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro @@ -0,0 +1,24 @@ +CONFIG += testcase + +SOURCES += tst_qsslsocket_onDemandCertificates_static.cpp +!wince*:win32:LIBS += -lws2_32 +QT += core-private network-private testlib +QT -= gui + +TARGET = tst_qsslsocket_onDemandCertificates_static + +win32 { + CONFIG(debug, debug|release) { + DESTDIR = debug +} else { + DESTDIR = release + } +} + +wince* { + DEFINES += SRCDIR=\\\"./\\\" +} else { + DEFINES += SRCDIR=\\\"$$PWD/\\\" +} + +requires(contains(QT_CONFIG,private_tests)) diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp new file mode 100644 index 0000000000..bbbfb3e6b9 --- /dev/null +++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include +#include + +#include +#include + +#include "private/qhostinfo_p.h" + +#include "../../../network-settings.h" + +#ifndef QT_NO_OPENSSL +class QSslSocketPtr: public QSharedPointer +{ +public: + inline QSslSocketPtr(QSslSocket *ptr = 0) + : QSharedPointer(ptr) + { } + + inline operator QSslSocket *() const { return data(); } +}; +#endif + +class tst_QSslSocket_onDemandCertificates_static : public QObject +{ + Q_OBJECT + + int proxyAuthCalled; + +public: + tst_QSslSocket_onDemandCertificates_static(); + virtual ~tst_QSslSocket_onDemandCertificates_static(); + +#ifndef QT_NO_OPENSSL + QSslSocketPtr newSocket(); +#endif + +public slots: + void initTestCase_data(); + void init(); + void cleanup(); + void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth); + +#ifndef QT_NO_OPENSSL +private slots: + void onDemandRootCertLoadingStaticMethods(); + +private: + QSslSocket *socket; +#endif // QT_NO_OPENSSL +}; + +tst_QSslSocket_onDemandCertificates_static::tst_QSslSocket_onDemandCertificates_static() +{ +} + +tst_QSslSocket_onDemandCertificates_static::~tst_QSslSocket_onDemandCertificates_static() +{ +} + +enum ProxyTests { + NoProxy = 0x00, + Socks5Proxy = 0x01, + HttpProxy = 0x02, + TypeMask = 0x0f, + + NoAuth = 0x00, + AuthBasic = 0x10, + AuthNtlm = 0x20, + AuthMask = 0xf0 +}; + +void tst_QSslSocket_onDemandCertificates_static::initTestCase_data() +{ + QTest::addColumn("setProxy"); + QTest::addColumn("proxyType"); + + QTest::newRow("WithoutProxy") << false << 0; + QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy); + QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic); + + QTest::newRow("WithHttpProxy") << true << int(HttpProxy); + QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic); + // uncomment the line below when NTLM works +// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm); +} + +void tst_QSslSocket_onDemandCertificates_static::init() +{ + QFETCH_GLOBAL(bool, setProxy); + if (setProxy) { + QFETCH_GLOBAL(int, proxyType); + QString testServer = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(); + QNetworkProxy proxy; + + switch (proxyType) { + case Socks5Proxy: + proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1080); + break; + + case Socks5Proxy | AuthBasic: + proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1081); + break; + + case HttpProxy | NoAuth: + proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3128); + break; + + case HttpProxy | AuthBasic: + proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3129); + break; + + case HttpProxy | AuthNtlm: + proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3130); + break; + } + QNetworkProxy::setApplicationProxy(proxy); + } + + qt_qhostinfo_clear_cache(); +} + +void tst_QSslSocket_onDemandCertificates_static::cleanup() +{ + QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy); +} + +#ifndef QT_NO_OPENSSL +QSslSocketPtr tst_QSslSocket_onDemandCertificates_static::newSocket() +{ + QSslSocket *socket = new QSslSocket; + + proxyAuthCalled = 0; + connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), + SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), + Qt::DirectConnection); + + return QSslSocketPtr(socket); +} +#endif + +void tst_QSslSocket_onDemandCertificates_static::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth) +{ + ++proxyAuthCalled; + auth->setUser("qsockstest"); + auth->setPassword("password"); +} + +#ifndef QT_NO_OPENSSL + +void tst_QSslSocket_onDemandCertificates_static::onDemandRootCertLoadingStaticMethods() +{ + QString host("qt.nokia.com"); + + // not using any root certs -> should not work + QSslSocket::setDefaultCaCertificates(QList()); + QSslSocketPtr socket = newSocket(); + this->socket = socket; + socket->connectToHostEncrypted(host, 443); + QVERIFY(!socket->waitForEncrypted()); + + // using system root certs -> should work + QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates()); + QSslSocketPtr socket2 = newSocket(); + this->socket = socket2; + socket2->connectToHostEncrypted(host, 443); + QEXPECT_FAIL("", "QTBUG-20983 fails", Abort); + QVERIFY2(socket2->waitForEncrypted(), qPrintable(socket2->errorString())); + + // not using any root certs again -> should not work + QSslSocket::setDefaultCaCertificates(QList()); + QSslSocketPtr socket3 = newSocket(); + this->socket = socket3; + socket3->connectToHostEncrypted(host, 443); + QVERIFY(!socket3->waitForEncrypted()); + + QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates()); + + // setting empty default configuration -> should not work + QSslConfiguration conf; + QSslConfiguration originalDefaultConf = QSslConfiguration::defaultConfiguration(); + QSslConfiguration::setDefaultConfiguration(conf); + QSslSocketPtr socket4 = newSocket(); + this->socket = socket4; + socket4->connectToHostEncrypted(host, 443); + QVERIFY(!socket4->waitForEncrypted(4000)); + QSslConfiguration::setDefaultConfiguration(originalDefaultConf); // restore old behaviour for run with proxies etc. +} + +#endif // QT_NO_OPENSSL + +QTEST_MAIN(tst_QSslSocket_onDemandCertificates_static) +#include "tst_qsslsocket_onDemandCertificates_static.moc" diff --git a/tests/auto/network/ssl/ssl.pro b/tests/auto/network/ssl/ssl.pro index fd57a1729b..dd92ec0358 100644 --- a/tests/auto/network/ssl/ssl.pro +++ b/tests/auto/network/ssl/ssl.pro @@ -3,6 +3,7 @@ SUBDIRS=\ qsslcertificate \ qsslcipher \ qsslerror \ - qsslsocket \ qsslkey \ - + qsslsocket \ + qsslsocket_onDemandCertificates_member \ + qsslsocket_onDemandCertificates_static \ diff --git a/tests/auto/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro b/tests/auto/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro deleted file mode 100644 index 33b55b4638..0000000000 --- a/tests/auto/qsslsocket_onDemandCertificates_member/qsslsocket_onDemandCertificates_member.pro +++ /dev/null @@ -1,24 +0,0 @@ -CONFIG += testcase - -SOURCES += tst_qsslsocket_onDemandCertificates_member.cpp -!wince*:win32:LIBS += -lws2_32 -QT += core-private network-private testlib -QT -= gui - -TARGET = tst_qsslsocket_onDemandCertificates_member - -win32 { - CONFIG(debug, debug|release) { - DESTDIR = debug -} else { - DESTDIR = release - } -} - -wince* { - DEFINES += SRCDIR=\\\"./\\\" -} else { - DEFINES += SRCDIR=\\\"$$PWD/\\\" -} - -requires(contains(QT_CONFIG,private_tests)) diff --git a/tests/auto/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp b/tests/auto/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp deleted file mode 100644 index 2f4be28b38..0000000000 --- a/tests/auto/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp +++ /dev/null @@ -1,228 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include -#include - -#include -#include - -#include "private/qhostinfo_p.h" - -#include "../network-settings.h" - -#ifndef QT_NO_OPENSSL -class QSslSocketPtr: public QSharedPointer -{ -public: - inline QSslSocketPtr(QSslSocket *ptr = 0) - : QSharedPointer(ptr) - { } - - inline operator QSslSocket *() const { return data(); } -}; -#endif - -class tst_QSslSocket_onDemandCertificates_member : public QObject -{ - Q_OBJECT - - int proxyAuthCalled; - -public: - tst_QSslSocket_onDemandCertificates_member(); - virtual ~tst_QSslSocket_onDemandCertificates_member(); - -#ifndef QT_NO_OPENSSL - QSslSocketPtr newSocket(); -#endif - -public slots: - void initTestCase_data(); - void init(); - void cleanup(); - void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth); - -#ifndef QT_NO_OPENSSL -private slots: - void onDemandRootCertLoadingMemberMethods(); - -private: - QSslSocket *socket; -#endif // QT_NO_OPENSSL -}; - -tst_QSslSocket_onDemandCertificates_member::tst_QSslSocket_onDemandCertificates_member() -{ -} - -tst_QSslSocket_onDemandCertificates_member::~tst_QSslSocket_onDemandCertificates_member() -{ -} - -enum ProxyTests { - NoProxy = 0x00, - Socks5Proxy = 0x01, - HttpProxy = 0x02, - TypeMask = 0x0f, - - NoAuth = 0x00, - AuthBasic = 0x10, - AuthNtlm = 0x20, - AuthMask = 0xf0 -}; - -void tst_QSslSocket_onDemandCertificates_member::initTestCase_data() -{ - QTest::addColumn("setProxy"); - QTest::addColumn("proxyType"); - - QTest::newRow("WithoutProxy") << false << 0; - QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy); - QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic); - - QTest::newRow("WithHttpProxy") << true << int(HttpProxy); - QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic); - // uncomment the line below when NTLM works -// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm); -} - -void tst_QSslSocket_onDemandCertificates_member::init() -{ - QFETCH_GLOBAL(bool, setProxy); - if (setProxy) { - QFETCH_GLOBAL(int, proxyType); - QString testServer = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(); - QNetworkProxy proxy; - - switch (proxyType) { - case Socks5Proxy: - proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1080); - break; - - case Socks5Proxy | AuthBasic: - proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1081); - break; - - case HttpProxy | NoAuth: - proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3128); - break; - - case HttpProxy | AuthBasic: - proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3129); - break; - - case HttpProxy | AuthNtlm: - proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3130); - break; - } - QNetworkProxy::setApplicationProxy(proxy); - } - - qt_qhostinfo_clear_cache(); -} - -void tst_QSslSocket_onDemandCertificates_member::cleanup() -{ - QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy); -} - -#ifndef QT_NO_OPENSSL -QSslSocketPtr tst_QSslSocket_onDemandCertificates_member::newSocket() -{ - QSslSocket *socket = new QSslSocket; - - proxyAuthCalled = 0; - connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), - SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), - Qt::DirectConnection); - - return QSslSocketPtr(socket); -} -#endif - -void tst_QSslSocket_onDemandCertificates_member::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth) -{ - ++proxyAuthCalled; - auth->setUser("qsockstest"); - auth->setPassword("password"); -} - -#ifndef QT_NO_OPENSSL - -void tst_QSslSocket_onDemandCertificates_member::onDemandRootCertLoadingMemberMethods() -{ - QString host("qt.nokia.com"); - - // not using any root certs -> should not work - QSslSocketPtr socket2 = newSocket(); - this->socket = socket2; - socket2->setCaCertificates(QList()); - socket2->connectToHostEncrypted(host, 443); - QVERIFY(!socket2->waitForEncrypted()); - - // default: using on demand loading -> should work - QSslSocketPtr socket = newSocket(); - this->socket = socket; - socket->connectToHostEncrypted(host, 443); - QEXPECT_FAIL("", "QTBUG-20983 fails", Abort); - QVERIFY2(socket->waitForEncrypted(), qPrintable(socket->errorString())); - - // not using any root certs again -> should not work - QSslSocketPtr socket3 = newSocket(); - this->socket = socket3; - socket3->setCaCertificates(QList()); - socket3->connectToHostEncrypted(host, 443); - QVERIFY(!socket3->waitForEncrypted()); - - // setting empty SSL configuration explicitly -> should not work - QSslSocketPtr socket4 = newSocket(); - this->socket = socket4; - socket4->setSslConfiguration(QSslConfiguration()); - socket4->connectToHostEncrypted(host, 443); - QVERIFY(!socket4->waitForEncrypted()); -} - -#endif // QT_NO_OPENSSL - -QTEST_MAIN(tst_QSslSocket_onDemandCertificates_member) -#include "tst_qsslsocket_onDemandCertificates_member.moc" diff --git a/tests/auto/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro b/tests/auto/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro deleted file mode 100644 index 8a500a3d99..0000000000 --- a/tests/auto/qsslsocket_onDemandCertificates_static/qsslsocket_onDemandCertificates_static.pro +++ /dev/null @@ -1,24 +0,0 @@ -CONFIG += testcase - -SOURCES += tst_qsslsocket_onDemandCertificates_static.cpp -!wince*:win32:LIBS += -lws2_32 -QT += core-private network-private testlib -QT -= gui - -TARGET = tst_qsslsocket_onDemandCertificates_static - -win32 { - CONFIG(debug, debug|release) { - DESTDIR = debug -} else { - DESTDIR = release - } -} - -wince* { - DEFINES += SRCDIR=\\\"./\\\" -} else { - DEFINES += SRCDIR=\\\"$$PWD/\\\" -} - -requires(contains(QT_CONFIG,private_tests)) diff --git a/tests/auto/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp b/tests/auto/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp deleted file mode 100644 index 16dea56c97..0000000000 --- a/tests/auto/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include -#include - -#include -#include - -#include "private/qhostinfo_p.h" - -#include "../network-settings.h" - -#ifndef QT_NO_OPENSSL -class QSslSocketPtr: public QSharedPointer -{ -public: - inline QSslSocketPtr(QSslSocket *ptr = 0) - : QSharedPointer(ptr) - { } - - inline operator QSslSocket *() const { return data(); } -}; -#endif - -class tst_QSslSocket_onDemandCertificates_static : public QObject -{ - Q_OBJECT - - int proxyAuthCalled; - -public: - tst_QSslSocket_onDemandCertificates_static(); - virtual ~tst_QSslSocket_onDemandCertificates_static(); - -#ifndef QT_NO_OPENSSL - QSslSocketPtr newSocket(); -#endif - -public slots: - void initTestCase_data(); - void init(); - void cleanup(); - void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth); - -#ifndef QT_NO_OPENSSL -private slots: - void onDemandRootCertLoadingStaticMethods(); - -private: - QSslSocket *socket; -#endif // QT_NO_OPENSSL -}; - -tst_QSslSocket_onDemandCertificates_static::tst_QSslSocket_onDemandCertificates_static() -{ -} - -tst_QSslSocket_onDemandCertificates_static::~tst_QSslSocket_onDemandCertificates_static() -{ -} - -enum ProxyTests { - NoProxy = 0x00, - Socks5Proxy = 0x01, - HttpProxy = 0x02, - TypeMask = 0x0f, - - NoAuth = 0x00, - AuthBasic = 0x10, - AuthNtlm = 0x20, - AuthMask = 0xf0 -}; - -void tst_QSslSocket_onDemandCertificates_static::initTestCase_data() -{ - QTest::addColumn("setProxy"); - QTest::addColumn("proxyType"); - - QTest::newRow("WithoutProxy") << false << 0; - QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy); - QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic); - - QTest::newRow("WithHttpProxy") << true << int(HttpProxy); - QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic); - // uncomment the line below when NTLM works -// QTest::newRow("WithHttpProxyNtlmAuth") << true << int(HttpProxy | AuthNtlm); -} - -void tst_QSslSocket_onDemandCertificates_static::init() -{ - QFETCH_GLOBAL(bool, setProxy); - if (setProxy) { - QFETCH_GLOBAL(int, proxyType); - QString testServer = QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(); - QNetworkProxy proxy; - - switch (proxyType) { - case Socks5Proxy: - proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1080); - break; - - case Socks5Proxy | AuthBasic: - proxy = QNetworkProxy(QNetworkProxy::Socks5Proxy, testServer, 1081); - break; - - case HttpProxy | NoAuth: - proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3128); - break; - - case HttpProxy | AuthBasic: - proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3129); - break; - - case HttpProxy | AuthNtlm: - proxy = QNetworkProxy(QNetworkProxy::HttpProxy, testServer, 3130); - break; - } - QNetworkProxy::setApplicationProxy(proxy); - } - - qt_qhostinfo_clear_cache(); -} - -void tst_QSslSocket_onDemandCertificates_static::cleanup() -{ - QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy); -} - -#ifndef QT_NO_OPENSSL -QSslSocketPtr tst_QSslSocket_onDemandCertificates_static::newSocket() -{ - QSslSocket *socket = new QSslSocket; - - proxyAuthCalled = 0; - connect(socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), - SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)), - Qt::DirectConnection); - - return QSslSocketPtr(socket); -} -#endif - -void tst_QSslSocket_onDemandCertificates_static::proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth) -{ - ++proxyAuthCalled; - auth->setUser("qsockstest"); - auth->setPassword("password"); -} - -#ifndef QT_NO_OPENSSL - -void tst_QSslSocket_onDemandCertificates_static::onDemandRootCertLoadingStaticMethods() -{ - QString host("qt.nokia.com"); - - // not using any root certs -> should not work - QSslSocket::setDefaultCaCertificates(QList()); - QSslSocketPtr socket = newSocket(); - this->socket = socket; - socket->connectToHostEncrypted(host, 443); - QVERIFY(!socket->waitForEncrypted()); - - // using system root certs -> should work - QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates()); - QSslSocketPtr socket2 = newSocket(); - this->socket = socket2; - socket2->connectToHostEncrypted(host, 443); - QEXPECT_FAIL("", "QTBUG-20983 fails", Abort); - QVERIFY2(socket2->waitForEncrypted(), qPrintable(socket2->errorString())); - - // not using any root certs again -> should not work - QSslSocket::setDefaultCaCertificates(QList()); - QSslSocketPtr socket3 = newSocket(); - this->socket = socket3; - socket3->connectToHostEncrypted(host, 443); - QVERIFY(!socket3->waitForEncrypted()); - - QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates()); - - // setting empty default configuration -> should not work - QSslConfiguration conf; - QSslConfiguration originalDefaultConf = QSslConfiguration::defaultConfiguration(); - QSslConfiguration::setDefaultConfiguration(conf); - QSslSocketPtr socket4 = newSocket(); - this->socket = socket4; - socket4->connectToHostEncrypted(host, 443); - QVERIFY(!socket4->waitForEncrypted(4000)); - QSslConfiguration::setDefaultConfiguration(originalDefaultConf); // restore old behaviour for run with proxies etc. -} - -#endif // QT_NO_OPENSSL - -QTEST_MAIN(tst_QSslSocket_onDemandCertificates_static) -#include "tst_qsslsocket_onDemandCertificates_static.moc" -- cgit v1.2.3