diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-18 13:38:34 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-07-18 13:38:34 +0200 |
| commit | fd9999bd871da6181c561eeacd2aed984dae4699 (patch) | |
| tree | 7606b6bb68080a1cf670137382c812424676735f /tests | |
| parent | cf26a0767ffb97c3ed4931c2af84ebd38ed87fdf (diff) | |
| download | qxmpp-fd9999bd871da6181c561eeacd2aed984dae4699.tar.gz | |
add QXmppRegisterIq as defined by XEP-0077: In-Band Registration
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/register.cpp | 147 | ||||
| -rw-r--r-- | tests/register.h | 36 | ||||
| -rw-r--r-- | tests/tests.cpp | 4 | ||||
| -rw-r--r-- | tests/tests.pro | 2 |
4 files changed, 189 insertions, 0 deletions
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( + "<iq id=\"reg1\" to=\"shakespeare.lit\" type=\"get\">" + "<query xmlns=\"jabber:iq:register\"/>" + "</iq>"); + + 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( + "<iq id=\"reg1\" type=\"result\">" + "<query xmlns=\"jabber:iq:register\">" + "<instructions>Choose a username and password for use with this service. Please also provide your email address.</instructions>" + "<username/>" + "<password/>" + "<email/>" + "</query>" + "</iq>"); + + 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( + "<iq id=\"reg3\" to=\"juliet@capulet.com/balcony\" from=\"contests.shakespeare.lit\" type=\"result\">" + "<query xmlns=\"jabber:iq:register\">" + "<instructions>Use the enclosed form to register. If your Jabber client does not support Data Forms, visit http://www.shakespeare.lit/contests.php</instructions>" + "<x xmlns=\"jabber:x:data\" type=\"form\">" + "<title>Contest Registration</title>" + "<instructions>" + "Please provide the following information" + "to sign up for our special contests!" + "</instructions>" + "<field type=\"hidden\" var=\"FORM_TYPE\">" + "<value>jabber:iq:register</value>" + "</field>" + "<field type=\"text-single\" label=\"Given Name\" var=\"first\">" + "<required/>" + "</field>" + "<field type=\"text-single\" label=\"Family Name\" var=\"last\">" + "<required/>" + "</field>" + "<field type=\"text-single\" label=\"Email Address\" var=\"email\">" + "<required/>" + "</field>" + "<field type=\"list-single\" label=\"Gender\" var=\"x-gender\">" + "<option label=\"Male\"><value>M</value></option>" + "<option label=\"Female\"><value>F</value></option>" + "</field>" + "</x>" + "</query>" + "</iq>"); + + 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( + "<iq id=\"reg2\" type=\"set\">" + "<query xmlns=\"jabber:iq:register\">" + "<username>bill</username>" + "<password>Calliope</password>" + "<email>bard@shakespeare.lit</email>" + "</query>" + "</iq>"); + + 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 <QObject> + +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 |
