aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-03-05 19:20:27 +0100
committerLinus Jahn <lnj@kaidan.im>2022-03-17 12:02:27 +0100
commita0095bc85041dc399ceb0e6bb8e06aaba8ac262e (patch)
tree640be66d8193204886e9eb5842766950e2c37bca /tests
parentf3bd111c21985477fddf5715abe6be6dfb210b3b (diff)
downloadqxmpp-a0095bc85041dc399ceb0e6bb8e06aaba8ac262e.tar.gz
Message: Add end-to-end encryption fallback body
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmppmessage/tst_qxmppmessage.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp
index fab315ba..a8e5453e 100644
--- a/tests/qxmppmessage/tst_qxmppmessage.cpp
+++ b/tests/qxmppmessage/tst_qxmppmessage.cpp
@@ -54,6 +54,7 @@ private slots:
void testMixInvitation();
void testTrustMessageElement();
void testOmemoElement();
+ void testE2eeFallbackBody();
};
void tst_QXmppMessage::testBasic_data()
@@ -1197,5 +1198,50 @@ void tst_QXmppMessage::testOmemoElement()
serializePacket(message2, xmlOut2);
}
+void tst_QXmppMessage::testE2eeFallbackBody()
+{
+ const QByteArray xml(
+ "<message type=\"chat\">"
+ "<body>This message is encrypted with OMEMO 2 but could not be decrypted</body>"
+ "</message>");
+
+ // The custom de- / serialization lambda expressions are needed because of
+ // "QXmpp::ScePublic".
+
+ const auto parsePacket = [](QXmppMessage &packet, const QByteArray &xml) {
+ // qDebug() << "parsing" << xml;
+ packet.parse(xmlToDom(xml), QXmpp::ScePublic);
+ };
+
+ const auto packetToXml = [](const QXmppMessage &packet) {
+ QBuffer buffer;
+ buffer.open(QIODevice::ReadWrite);
+ QXmlStreamWriter writer(&buffer);
+ packet.toXml(&writer, QXmpp::ScePublic);
+ auto data = buffer.data();
+ data.replace(u'\'', "&apos;");
+ return data;
+ };
+
+ const auto serializePacket = [=](QXmppMessage &packet, const QByteArray &xml) {
+ auto processedXml = xml;
+ processedXml.replace(u'\'', u'"');
+
+ const auto data = packetToXml(packet);
+ qDebug() << "expect " << processedXml;
+ qDebug() << "writing" << data;
+ QCOMPARE(data, processedXml);
+ };
+
+ QXmppMessage message1;
+ parsePacket(message1, xml);
+ QCOMPARE(message1.e2eeFallbackBody(), QStringLiteral("This message is encrypted with OMEMO 2 but could not be decrypted"));
+ serializePacket(message1, xml);
+
+ QXmppMessage message2;
+ message2.setE2eeFallbackBody(QStringLiteral("This message is encrypted with OMEMO 2 but could not be decrypted"));
+ serializePacket(message2, xml);
+}
+
QTEST_MAIN(tst_QXmppMessage)
#include "tst_qxmppmessage.moc"