summaryrefslogtreecommitdiffstats
path: root/tests/auto/qtcpsocket/tst_qtcpsocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qtcpsocket/tst_qtcpsocket.cpp')
-rw-r--r--tests/auto/qtcpsocket/tst_qtcpsocket.cpp87
1 files changed, 65 insertions, 22 deletions
diff --git a/tests/auto/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/qtcpsocket/tst_qtcpsocket.cpp
index 2dbe5b7..86069cd 100644
--- a/tests/auto/qtcpsocket/tst_qtcpsocket.cpp
+++ b/tests/auto/qtcpsocket/tst_qtcpsocket.cpp
@@ -95,6 +95,7 @@
#include "private/qhostinfo_p.h"
#include "../network-settings.h"
+#include "../../shared/util.h"
Q_DECLARE_METATYPE(QAbstractSocket::SocketError)
Q_DECLARE_METATYPE(QAbstractSocket::SocketState)
@@ -222,6 +223,8 @@ protected slots:
void proxyAuthenticationRequired(const QNetworkProxy &, QAuthenticator *auth);
private:
+ QByteArray expectedReplyIMAP();
+ void fetchExpectedReplyIMAP();
QTcpSocket *newSocket() const;
QTcpSocket *nonBlockingIMAP_socket;
QStringList nonBlockingIMAP_data;
@@ -233,6 +236,8 @@ private:
bool readingBody;
QTime timer;
+ QByteArray expectedReplyIMAP_cached;
+
mutable int proxyAuthCalled;
bool gotClosedSignal;
@@ -658,8 +663,6 @@ void tst_QTcpSocket::nonBlockingIMAP()
// Read greeting
QVERIFY(!nonBlockingIMAP_data.isEmpty());
-// QCOMPARE(nonBlockingIMAP_data.at(0).toLatin1().constData(),
-// "* OK fluke Cyrus IMAP4 v2.2.12 server ready\r\n");
QCOMPARE(nonBlockingIMAP_data.at(0).left(4).toLatin1().constData(), "* OK");
nonBlockingIMAP_data.clear();
@@ -787,6 +790,36 @@ void tst_QTcpSocket::delayedClose()
delete socket;
}
+
+//----------------------------------------------------------------------------------
+
+QByteArray tst_QTcpSocket::expectedReplyIMAP()
+{
+ if (expectedReplyIMAP_cached.isEmpty()) {
+ fetchExpectedReplyIMAP();
+ }
+
+ return expectedReplyIMAP_cached;
+}
+
+// Figure out how the current IMAP server responds
+void tst_QTcpSocket::fetchExpectedReplyIMAP()
+{
+ QTcpSocket *socket = newSocket();
+ socket->connectToHost(QtNetworkSettings::serverName(), 143);
+ QVERIFY2(socket->waitForConnected(10000), qPrintable(socket->errorString()));
+ QVERIFY2(socket->state() == QTcpSocket::ConnectedState, qPrintable(socket->errorString()));
+
+ QTRY_VERIFY(socket->canReadLine());
+
+ QByteArray greeting = socket->readLine();
+ delete socket;
+
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(greeting), greeting.constData());
+
+ expectedReplyIMAP_cached = greeting;
+}
+
//----------------------------------------------------------------------------------
void tst_QTcpSocket::partialRead()
@@ -797,8 +830,8 @@ void tst_QTcpSocket::partialRead()
QVERIFY(socket->state() == QTcpSocket::ConnectedState);
char buf[512];
-// QByteArray greeting = "* OK fluke Cyrus IMAP4 v2.2.12 server ready";
- QByteArray greeting = "* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE";
+ QByteArray greeting = expectedReplyIMAP();
+ QVERIFY(!greeting.isEmpty());
for (int i = 0; i < 10; i += 2) {
while (socket->bytesAvailable() < 2)
@@ -821,8 +854,8 @@ void tst_QTcpSocket::unget()
QVERIFY(socket->state() == QTcpSocket::ConnectedState);
char buf[512];
-// QByteArray greeting = "* OK fluke Cyrus IMAP4 v2.2.12 server ready";
- QByteArray greeting = "* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE";
+ QByteArray greeting = expectedReplyIMAP();
+ QVERIFY(!greeting.isEmpty());
for (int i = 0; i < 10; i += 2) {
while (socket->bytesAvailable() < 2)
@@ -1244,13 +1277,17 @@ void tst_QTcpSocket::readLine()
QVERIFY(socket->waitForReadyRead(10000));
char buffer[1024];
- int expectedReplySize = QtNetworkSettings::expectedReplyIMAP().size();
- Q_ASSERT(expectedReplySize >= 3);
- QCOMPARE(socket->readLine(buffer, sizeof(buffer)), qint64(expectedReplySize));
- QCOMPARE((int) buffer[expectedReplySize-2], (int) '\r');
- QCOMPARE((int) buffer[expectedReplySize-1], (int) '\n');
- QCOMPARE((int) buffer[expectedReplySize], (int) '\0');
+ qint64 linelen = socket->readLine(buffer, sizeof(buffer));
+ QVERIFY(linelen >= 3);
+ QVERIFY(linelen < 1024);
+
+ QByteArray reply = QByteArray::fromRawData(buffer, linelen);
+ QCOMPARE((int) buffer[linelen-2], (int) '\r');
+ QCOMPARE((int) buffer[linelen-1], (int) '\n');
+ QCOMPARE((int) buffer[linelen], (int) '\0');
+
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(reply), reply.constData());
QCOMPARE(socket->write("1 NOOP\r\n"), qint64(8));
@@ -1282,13 +1319,11 @@ void tst_QTcpSocket::readLine()
void tst_QTcpSocket::readLineString()
{
QTcpSocket *socket = newSocket();
-// QByteArray expected("* OK fluke Cyrus IMAP4 v2.2.12 server ready\r\n");
- QByteArray expected("* OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS LOGINDISABLED] qt-test-server.qt-test-net Cyrus IMAP4 v2.3.11-Mandriva-RPM-2.3.11-6mdv2008.1 server ready\r\n");
socket->connectToHost(QtNetworkSettings::serverName(), 143);
QVERIFY(socket->waitForReadyRead(10000));
QByteArray arr = socket->readLine();
- QCOMPARE(arr, QtNetworkSettings::expectedReplyIMAP());
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(arr), arr.constData());
delete socket;
}
@@ -1456,8 +1491,11 @@ void tst_QTcpSocket::atEnd()
QVERIFY(!stream.atEnd());
QString greeting = stream.readLine();
QVERIFY(stream.atEnd());
-// QCOMPARE(greeting, QString("220 (vsFTPd 2.0.4)"));
- QCOMPARE(greeting, QString("220 (vsFTPd 2.0.5)"));
+
+ // Test server must use some vsFTPd 2.x.x version
+ QVERIFY2(greeting.length() == sizeof("220 (vsFTPd 2.x.x)")-1, qPrintable(greeting));
+ QVERIFY2(greeting.startsWith("220 (vsFTPd 2."), qPrintable(greeting));
+ QVERIFY2(greeting.endsWith(")"), qPrintable(greeting));
delete socket;
}
@@ -1522,7 +1560,8 @@ void tst_QTcpSocket::socketInAThread()
TestThread thread;
thread.start();
QVERIFY(thread.wait(15000));
- QCOMPARE(thread.data(), QtNetworkSettings::expectedReplyFtp());
+ QByteArray data = thread.data();
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data), data.constData());
}
}
@@ -1542,9 +1581,13 @@ void tst_QTcpSocket::socketsInThreads()
QVERIFY(thread3.wait(15000));
QVERIFY(thread1.wait(15000));
- QCOMPARE(thread1.data(),QtNetworkSettings::expectedReplyFtp());
- QCOMPARE(thread2.data(),QtNetworkSettings::expectedReplyFtp());
- QCOMPARE(thread3.data(),QtNetworkSettings::expectedReplyFtp());
+ QByteArray data1 = thread1.data();
+ QByteArray data2 = thread2.data();
+ QByteArray data3 = thread3.data();
+
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data1), data1.constData());
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data2), data2.constData());
+ QVERIFY2(QtNetworkSettings::compareReplyFtp(data3), data3.constData());
}
}
@@ -1846,7 +1889,7 @@ void tst_QTcpSocket::readyReadSignalsAfterWaitForReadyRead()
QCOMPARE(readyReadSpy.count(), 1);
QString s = socket->readLine();
- QCOMPARE(s.toLatin1().constData(), QtNetworkSettings::expectedReplyIMAP().constData());
+ QVERIFY2(QtNetworkSettings::compareReplyIMAP(s.toLatin1()), s.toLatin1().constData());
QCOMPARE(socket->bytesAvailable(), qint64(0));
QCoreApplication::instance()->processEvents();