aboutsummaryrefslogtreecommitdiff
path: root/tests/sasl.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-07-20 18:02:32 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2012-07-20 18:02:32 +0200
commit1b653eb9e6212678297281f5bca43bcd0b1a00fb (patch)
tree88033357f290e498f1028d3f194141d99812efcc /tests/sasl.cpp
parent51eef84fd4104f19228ebd85fce89658b64464a2 (diff)
downloadqxmpp-1b653eb9e6212678297281f5bca43bcd0b1a00fb.tar.gz
add support for two-step PLAIN SASL
Diffstat (limited to 'tests/sasl.cpp')
-rw-r--r--tests/sasl.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/sasl.cpp b/tests/sasl.cpp
index 8ea635b3..a5399294 100644
--- a/tests/sasl.cpp
+++ b/tests/sasl.cpp
@@ -231,3 +231,26 @@ void tst_QXmppSaslServer::testPlain()
delete server;
}
+
+void tst_QXmppSaslServer::testPlainChallenge()
+{
+ QXmppSaslServer *server = QXmppSaslServer::create("PLAIN");
+ QVERIFY(server != 0);
+ QCOMPARE(server->mechanism(), QLatin1String("PLAIN"));
+
+ // initial step returns challenge
+ QByteArray response;
+ QCOMPARE(server->respond(QByteArray(), response), QXmppSaslServer::Challenge);
+ QCOMPARE(response, QByteArray());
+
+ // initial step returns success
+ QCOMPARE(server->respond(QByteArray("\0foo\0bar", 8), response), QXmppSaslServer::InputNeeded);
+ QCOMPARE(response, QByteArray());
+ QCOMPARE(server->username(), QLatin1String("foo"));
+ QCOMPARE(server->password(), QLatin1String("bar"));
+
+ // any further step is an error
+ QCOMPARE(server->respond(QByteArray(), response), QXmppSaslServer::Failed);
+
+ delete server;
+}