1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// SPDX-FileCopyrightText: 2021 Linus Jahn <lnj@kaidan.im>
//
// SPDX-License-Identifier: LGPL-2.1-or-later
#include "QXmppSceEnvelope_p.h"
#include "util.h"
#include <QObject>
class tst_QXmppSceEnvelope : public QObject
{
Q_OBJECT
private:
Q_SLOT void testReader();
Q_SLOT void testWriter();
};
void tst_QXmppSceEnvelope::testReader()
{
const auto xml = QStringLiteral(
"<envelope xmlns=\"urn:xmpp:sce:1\">"
"<content><body xmlns=\"jabber:client\">Hello</body><x xmlns=\"jabber:x:oob\"><url>https://en.wikipedia.org/wiki/Fight_Club#Plot</url></x></content>"
"<time stamp=\"2004-01-25T06:05:00+01:00\"/>"
"<to jid=\"missioncontrol@houston.nasa.gov\"/>"
"<from jid=\"opportunity@mars.planet\"/>"
"<rpad>C1DHN9HK-9A25tSmwK4hU!Jji9%GKYK^syIlHJT9TnI4</rpad>"
"</envelope>");
QXmppSceEnvelopeReader reader(xmlToDom(xml));
QCOMPARE(reader.from(), QStringLiteral("opportunity@mars.planet"));
QCOMPARE(reader.to(), QStringLiteral("missioncontrol@houston.nasa.gov"));
QCOMPARE(reader.timestamp(), QDateTime({ 2004, 01, 25 }, { 05, 05, 00 }, Qt::UTC));
QCOMPARE(reader.contentElement().firstChildElement().tagName(), QStringLiteral("body"));
}
void tst_QXmppSceEnvelope::testWriter()
{
const auto expectedXml = QStringLiteral(
"<envelope xmlns=\"urn:xmpp:sce:1\">"
"<content><body xmlns=\"jabber:client\">Hello</body><x xmlns=\"jabber:x:oob\"><url>https://en.wikipedia.org/wiki/Fight_Club#Plot</url></x></content>"
"<time stamp=\"2004-01-25T05:05:00Z\"/>"
"<to jid=\"missioncontrol@houston.nasa.gov\"/>"
"<from jid=\"opportunity@mars.planet\"/>"
"<rpad>C1DHN9HK-9A25tSmwK4hU!Jji9%GKYK^syIlHJT9TnI4</rpad>"
"</envelope>");
QString out;
QXmlStreamWriter writer(&out);
QXmppSceEnvelopeWriter envelope(writer);
envelope.start();
envelope.writeContent([&writer] {
writer.writeStartElement("body");
writer.writeDefaultNamespace("jabber:client");
writer.writeCharacters("Hello");
writer.writeEndElement();
writer.writeStartElement("x");
writer.writeDefaultNamespace("jabber:x:oob");
writer.writeTextElement("url", "https://en.wikipedia.org/wiki/Fight_Club#Plot");
writer.writeEndElement();
});
envelope.writeTimestamp(QDateTime({ 2004, 01, 25 }, { 05, 05, 00 }, Qt::UTC));
envelope.writeTo("missioncontrol@houston.nasa.gov");
envelope.writeFrom("opportunity@mars.planet");
envelope.writeRpad("C1DHN9HK-9A25tSmwK4hU!Jji9%GKYK^syIlHJT9TnI4");
envelope.end();
QCOMPARE(out, expectedXml);
}
QTEST_MAIN(tst_QXmppSceEnvelope)
#include "tst_qxmppsceenvelope.moc"
|