diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-03-05 19:20:27 +0100 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-03-17 12:02:27 +0100 |
| commit | a0095bc85041dc399ceb0e6bb8e06aaba8ac262e (patch) | |
| tree | 640be66d8193204886e9eb5842766950e2c37bca /tests | |
| parent | f3bd111c21985477fddf5715abe6be6dfb210b3b (diff) | |
| download | qxmpp-a0095bc85041dc399ceb0e6bb8e06aaba8ac262e.tar.gz | |
Message: Add end-to-end encryption fallback body
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/qxmppmessage/tst_qxmppmessage.cpp | 46 |
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'\'', "'"); + 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" |
