Update license headers and add new license files
[contrib/qtwebsockets.git] / tests / auto / qwebsocket / tst_qwebsocket.cpp
index f7f57b7..0d1a46d 100644 (file)
@@ -5,36 +5,28 @@
 **
 ** This file is part of the test suite of the Qt Toolkit.
 **
-** $QT_BEGIN_LICENSE:LGPL$
+** $QT_BEGIN_LICENSE:LGPL21$
 ** Commercial License Usage
 ** Licensees holding valid commercial Qt licenses may use this file in
 ** accordance with the commercial license agreement provided with the
 ** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
 ** use the contact form at http://qt.digia.com/contact-us.
 **
 ** GNU Lesser General Public License Usage
 ** Alternatively, 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.
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 **
 ** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
+** rights. These rights are described in the Digia 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.
-**
-**
 ** $QT_END_LICENSE$
 **
 ****************************************************************************/
@@ -146,6 +138,10 @@ private Q_SLOTS:
     void tst_invalidOrigin();
     void tst_sendTextMessage();
     void tst_sendBinaryMessage();
+    void tst_errorString();
+#ifndef QT_NO_NETWORKPROXY
+    void tst_setProxy();
+#endif
 };
 
 tst_QWebSocket::tst_QWebSocket()
@@ -202,8 +198,7 @@ void tst_QWebSocket::tst_initialisation()
     QCOMPARE(socket->origin(), expectedOrigin);
     QCOMPARE(socket->version(), expectedVersion);
     QCOMPARE(socket->error(), QAbstractSocket::UnknownSocketError);
-    //error string defaults to "Unknown error" (localised)
-    QVERIFY(!socket->errorString().isEmpty());
+    QVERIFY(socket->errorString().isEmpty());
     QVERIFY(!socket->isValid());
     QVERIFY(socket->localAddress().isNull());
     QCOMPARE(socket->localPort(), quint16(0));
@@ -407,11 +402,15 @@ void tst_QWebSocket::tst_invalidOrigin()
 
 void tst_QWebSocket::tst_sendTextMessage()
 {
-    //will resolve in another commit
+    //TODO: will resolve in another commit
 #ifndef Q_OS_WIN
     EchoServer echoServer;
 
     QWebSocket socket;
+
+    //should return 0 because socket is not open yet
+    QCOMPARE(socket.sendTextMessage(QStringLiteral("1234")), 0);
+
     QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected()));
     QSignalSpy textMessageReceived(&socket, SIGNAL(textMessageReceived(QString)));
     QSignalSpy textFrameReceived(&socket, SIGNAL(textFrameReceived(QString,bool)));
@@ -477,11 +476,15 @@ void tst_QWebSocket::tst_sendTextMessage()
 
 void tst_QWebSocket::tst_sendBinaryMessage()
 {
-    //will resolve in another commit
+    //TODO: will resolve in another commit
 #ifndef Q_OS_WIN
     EchoServer echoServer;
 
     QWebSocket socket;
+
+    //should return 0 because socket is not open yet
+    QCOMPARE(socket.sendBinaryMessage(QByteArrayLiteral("1234")), 0);
+
     QSignalSpy socketConnectedSpy(&socket, SIGNAL(connected()));
     QSignalSpy textMessageReceived(&socket, SIGNAL(textMessageReceived(QString)));
     QSignalSpy textFrameReceived(&socket, SIGNAL(textFrameReceived(QString,bool)));
@@ -514,7 +517,7 @@ void tst_QWebSocket::tst_sendBinaryMessage()
 
     socket.close();
 
-    //QTBUG-36762: QWebSocket emits multiplied signals when socket was reopened
+    //QTBUG-36762: QWebSocket emits multiple signals when socket is reopened
     socketConnectedSpy.clear();
     binaryMessageReceived.clear();
     binaryFrameReceived.clear();
@@ -545,6 +548,47 @@ void tst_QWebSocket::tst_sendBinaryMessage()
 #endif
 }
 
+void tst_QWebSocket::tst_errorString()
+{
+    //Check for QTBUG-37228: QWebSocket returns "Unknown Error" for known errors
+    QWebSocket socket;
+
+    //check that the default error string is empty
+    QVERIFY(socket.errorString().isEmpty());
+
+    QSignalSpy errorSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError)));
+
+    socket.open(QUrl(QStringLiteral("ws://someserver.on.mars:9999")));
+
+    if (errorSpy.count() == 0)
+        errorSpy.wait();
+    QCOMPARE(errorSpy.count(), 1);
+    QList<QVariant> arguments = errorSpy.takeFirst();
+    QAbstractSocket::SocketError socketError =
+            qvariant_cast<QAbstractSocket::SocketError>(arguments.at(0));
+    QCOMPARE(socketError, QAbstractSocket::HostNotFoundError);
+    QCOMPARE(socket.errorString(), QStringLiteral("Host not found"));
+}
+
+#ifndef QT_NO_NETWORKPROXY
+void tst_QWebSocket::tst_setProxy()
+{
+    // check if property assignment works as expected.
+    QWebSocket socket;
+    QCOMPARE(socket.proxy(), QNetworkProxy(QNetworkProxy::DefaultProxy));
+
+    QNetworkProxy proxy;
+    proxy.setPort(123);
+    socket.setProxy(proxy);
+    QCOMPARE(socket.proxy(), proxy);
+
+    proxy.setPort(321);
+    QCOMPARE(socket.proxy().port(), quint16(123));
+    socket.setProxy(proxy);
+    QCOMPARE(socket.proxy(), proxy);
+}
+#endif // QT_NO_NETWORKPROXY
+
 QTEST_MAIN(tst_QWebSocket)
 
 #include "tst_qwebsocket.moc"