diff options
| author | Linus Jahn <lnj@kaidan.im> | 2020-03-31 21:45:44 +0200 |
|---|---|---|
| committer | LNJ <lnj@kaidan.im> | 2020-04-01 14:06:06 +0200 |
| commit | 49ead66e9b4d5914dfd9c33e62b0311d4d8eb940 (patch) | |
| tree | 33b7a03b4cc8cd9efd288eff8885c9b03a8f022a /tests | |
| parent | 03764c9abcd3c79873038935566f4e31a845ada9 (diff) | |
| download | qxmpp-49ead66e9b4d5914dfd9c33e62b0311d4d8eb940.tar.gz | |
QXmppStanza::Error: Add redirection URI from RFC6120
The error conditions <gone/> and <redirect/> can contain an XMPP URI to
redirect to as defined in RFC6120.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmppstanza/tst_qxmppstanza.cpp | 71 |
1 files changed, 63 insertions, 8 deletions
diff --git a/tests/qxmppstanza/tst_qxmppstanza.cpp b/tests/qxmppstanza/tst_qxmppstanza.cpp index 05522d3d..45cc8997 100644 --- a/tests/qxmppstanza/tst_qxmppstanza.cpp +++ b/tests/qxmppstanza/tst_qxmppstanza.cpp @@ -86,19 +86,70 @@ void tst_QXmppStanza::testErrorCases_data() QTest::addColumn<QXmppStanza::Error::Type>("type"); QTest::addColumn<QXmppStanza::Error::Condition>("condition"); QTest::addColumn<QString>("text"); + QTest::addColumn<QString>("redirectionUri"); -#define ROW(xml, type, condition, text) \ - QTest::newRow(QT_STRINGIFY(condition)) << QByteArrayLiteral(xml) << QXmppStanza::Error::type << QXmppStanza::Error::condition << text +#define ROW(name, xml, type, condition, text, redirect) \ + QTest::newRow(QT_STRINGIFY(name)) << QByteArrayLiteral(xml) << QXmppStanza::Error::type << QXmppStanza::Error::condition << text << redirect #define BASIC(xml, type, condition) \ - ROW(xml, type, condition, QString()) + ROW(condition, xml, type, condition, QString(), QString()) ROW( + empty-text, "<error type=\"modify\">" "<bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" "</error>", Modify, BadRequest, - ""); + QString(), + QString()); + ROW( + redirection-uri-gone, + "<error type=\"cancel\">" + "<gone xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">" + "xmpp:romeo@afterlife.example.net" + "</gone>" + "</error>", + Cancel, + Gone, + QString(), + "xmpp:romeo@afterlife.example.net"); + ROW( + redirection-uri-redirect, + "<error type=\"cancel\">" + "<redirect xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">" + "xmpp:rms@afterlife.example.net" + "</redirect>" + "</error>", + Cancel, + Redirect, + QString(), + "xmpp:rms@afterlife.example.net"); + ROW( + redirection-uri-empty, + "<error type=\"cancel\">" + "<redirect xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" + "</error>", + Cancel, + Redirect, + QString(), + QString()); + ROW( + policy-violation-text, + "<error type=\"modify\">" + "<policy-violation xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" + "<text xml:lang=\"en\" xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">The used words are not allowed on this server.</text>" + "</error>", + Modify, + PolicyViolation, + "The used words are not allowed on this server.", + QString()); + + BASIC( + "<error type=\"modify\">" + "<bad-request xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" + "</error>", + Modify, + BadRequest); BASIC( "<error type=\"cancel\">" "<conflict xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" @@ -159,14 +210,12 @@ void tst_QXmppStanza::testErrorCases_data() "</error>", Auth, NotAuthorized); - ROW( + BASIC( "<error type=\"modify\">" "<policy-violation xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" - "<text xml:lang=\"en\" xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\">The used words are not allowed on this server.</text>" "</error>", Modify, - PolicyViolation, - "The used words are not allowed on this server."); + PolicyViolation); BASIC( "<error type=\"wait\">" "<recipient-unavailable xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"/>" @@ -221,6 +270,9 @@ void tst_QXmppStanza::testErrorCases_data() "</error>", Modify, UndefinedCondition); + +#undef BASIC +#undef ROW } void tst_QXmppStanza::testErrorCases() @@ -229,6 +281,7 @@ void tst_QXmppStanza::testErrorCases() QFETCH(QXmppStanza::Error::Type, type); QFETCH(QXmppStanza::Error::Condition, condition); QFETCH(QString, text); + QFETCH(QString, redirectionUri); // parsing QXmppStanza::Error error; @@ -236,6 +289,7 @@ void tst_QXmppStanza::testErrorCases() QCOMPARE(error.type(), type); QCOMPARE(error.condition(), condition); QCOMPARE(error.text(), text); + QCOMPARE(error.redirectionUri(), redirectionUri); // check parsed error results in the same xml serializePacket(error, xml); @@ -244,6 +298,7 @@ void tst_QXmppStanza::testErrorCases() error.setType(type); error.setCondition(condition); error.setText(text); + error.setRedirectionUri(redirectionUri); serializePacket(error, xml); } |
