From fd9999bd871da6181c561eeacd2aed984dae4699 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Wed, 18 Jul 2012 13:38:34 +0200 Subject: add QXmppRegisterIq as defined by XEP-0077: In-Band Registration --- tests/register.cpp | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/register.h | 36 +++++++++++++ tests/tests.cpp | 4 ++ tests/tests.pro | 2 + 4 files changed, 189 insertions(+) create mode 100644 tests/register.cpp create mode 100644 tests/register.h (limited to 'tests') diff --git a/tests/register.cpp b/tests/register.cpp new file mode 100644 index 00000000..b8b9b547 --- /dev/null +++ b/tests/register.cpp @@ -0,0 +1,147 @@ +/* + * Copyright (C) 2008-2012 The QXmpp developers + * + * Author: + * Jeremy Lainé + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#include "QXmppRegisterIq.h" + +#include "tests.h" +#include "register.h" + +void tst_QXmppRegisterIq::testGet() +{ + const QByteArray xml( + "" + "" + ""); + + QXmppRegisterIq iq; + parsePacket(iq, xml); + QCOMPARE(iq.id(), QLatin1String("reg1")); + QCOMPARE(iq.to(), QLatin1String("shakespeare.lit")); + QCOMPARE(iq.from(), QString()); + QCOMPARE(iq.type(), QXmppIq::Get); + QCOMPARE(iq.instructions(), QString()); + QVERIFY(iq.username().isNull()); + QVERIFY(iq.password().isNull()); + QVERIFY(iq.email().isNull()); + QVERIFY(iq.form().isNull()); + serializePacket(iq, xml); +} + +void tst_QXmppRegisterIq::testResult() +{ + const QByteArray xml( + "" + "" + "Choose a username and password for use with this service. Please also provide your email address." + "" + "" + "" + "" + ""); + + QXmppRegisterIq iq; + parsePacket(iq, xml); + QCOMPARE(iq.id(), QLatin1String("reg1")); + QCOMPARE(iq.to(), QString()); + QCOMPARE(iq.from(), QString()); + QCOMPARE(iq.type(), QXmppIq::Result); + QCOMPARE(iq.instructions(), QLatin1String("Choose a username and password for use with this service. Please also provide your email address.")); + QVERIFY(!iq.username().isNull()); + QVERIFY(iq.username().isEmpty()); + QVERIFY(!iq.password().isNull()); + QVERIFY(iq.password().isEmpty()); + QVERIFY(!iq.email().isNull()); + QVERIFY(iq.email().isEmpty()); + QVERIFY(iq.form().isNull()); + serializePacket(iq, xml); +} + +void tst_QXmppRegisterIq::testResultWithForm() +{ + const QByteArray xml( + "" + "" + "Use the enclosed form to register. If your Jabber client does not support Data Forms, visit http://www.shakespeare.lit/contests.php" + "" + "Contest Registration" + "" + "Please provide the following information" + "to sign up for our special contests!" + "" + "" + "jabber:iq:register" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + ""); + + QXmppRegisterIq iq; + parsePacket(iq, xml); + QCOMPARE(iq.id(), QLatin1String("reg3")); + QCOMPARE(iq.to(), QLatin1String("juliet@capulet.com/balcony")); + QCOMPARE(iq.from(), QLatin1String("contests.shakespeare.lit")); + QCOMPARE(iq.type(), QXmppIq::Result); + QCOMPARE(iq.instructions(), QLatin1String("Use the enclosed form to register. If your Jabber client does not support Data Forms, visit http://www.shakespeare.lit/contests.php")); + QVERIFY(iq.username().isNull()); + QVERIFY(iq.password().isNull()); + QVERIFY(iq.email().isNull()); + QVERIFY(!iq.form().isNull()); + serializePacket(iq, xml); +} + +void tst_QXmppRegisterIq::testSet() +{ + const QByteArray xml( + "" + "" + "bill" + "Calliope" + "bard@shakespeare.lit" + "" + ""); + + QXmppRegisterIq iq; + parsePacket(iq, xml); + QCOMPARE(iq.id(), QLatin1String("reg2")); + QCOMPARE(iq.to(), QString()); + QCOMPARE(iq.from(), QString()); + QCOMPARE(iq.type(), QXmppIq::Set); + QCOMPARE(iq.username(), QLatin1String("bill")); + QCOMPARE(iq.password(), QLatin1String("Calliope")); + QCOMPARE(iq.email(), QLatin1String("bard@shakespeare.lit")); + QVERIFY(iq.form().isNull()); + serializePacket(iq, xml); +} diff --git a/tests/register.h b/tests/register.h new file mode 100644 index 00000000..f2ff6283 --- /dev/null +++ b/tests/register.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2008-2012 The QXmpp developers + * + * Author: + * Jeremy Lainé + * + * Source: + * http://code.google.com/p/qxmpp + * + * This file is a part of QXmpp library. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + */ + +#include + +class tst_QXmppRegisterIq : public QObject +{ + Q_OBJECT + +private slots: + void testGet(); + void testResult(); + void testResultWithForm(); + void testSet(); +}; + diff --git a/tests/tests.cpp b/tests/tests.cpp index 24ce8a2e..c9cd03f1 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -54,6 +54,7 @@ #include "QXmppEntityTimeIq.h" #include "dataform.h" +#include "register.h" #include "rtp.h" #include "tests.h" @@ -1743,6 +1744,9 @@ int main(int argc, char *argv[]) TestPubSub testPubSub; errors += QTest::qExec(&testPubSub); + tst_QXmppRegisterIq testRegister; + errors += QTest::qExec(&testRegister); + TestRsm testRsm; errors += QTest::qExec(&testRsm); diff --git a/tests/tests.pro b/tests/tests.pro index 68e85927..47961519 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -7,10 +7,12 @@ TARGET = qxmpp-tests RESOURCES += tests.qrc SOURCES += \ dataform.cpp \ + register.cpp \ rtp.cpp \ tests.cpp HEADERS += \ dataform.h \ + register.h \ rtp.h \ tests.h -- cgit v1.2.3