aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-04-28 22:11:25 +0200
committerLNJ <lnj@kaidan.im>2019-09-06 21:18:51 +0200
commite7394afc6730b16673f4173fcbc55d54a810a80b (patch)
tree854b917a079c385e780a72f9465403b70d53dc57 /tests
parenta0925867901052d97fe84c2fcf31c720e0443546 (diff)
downloadqxmpp-e7394afc6730b16673f4173fcbc55d54a810a80b.tar.gz
Implement XEP-0380: Explicit Message Encryption
This adds parsing and serialization for XEP-0380: Explicit Message Encryption in version 0.3.0. https://xmpp.org/extensions/xep-0380.html
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 9441acef..5fe4b964 100644
--- a/tests/qxmppmessage/tst_qxmppmessage.cpp
+++ b/tests/qxmppmessage/tst_qxmppmessage.cpp
@@ -50,6 +50,7 @@ private slots:
void testMessageCorrect();
void testMessageAttaching();
void testMix();
+ void testEme();
void testSpoiler();
};
@@ -114,6 +115,7 @@ void tst_QXmppMessage::testBasic()
QCOMPARE(message.isReceiptRequested(), false);
QCOMPARE(message.receiptId(), QString());
QCOMPARE(message.xhtml(), QString());
+ QCOMPARE(message.encryptionMethod(), QXmppMessage::NoEncryption);
QVERIFY(!message.isSpoiler());
serializePacket(message, xml);
}
@@ -663,6 +665,50 @@ void tst_QXmppMessage::testMix()
QCOMPARE(message.mixUserNick(), QString("erik"));
}
+void tst_QXmppMessage::testEme()
+{
+ // test standard encryption: OMEMO
+ const QByteArray xmlOmemo(
+ "<message to=\"foo@example.com/QXmpp\" from=\"bar@example.com/QXmpp\" type=\"normal\">"
+ "<body>This message is encrypted with OMEMO, but your client doesn't seem to support that.</body>"
+ "<encryption xmlns=\"urn:xmpp:eme:0\" namespace=\"eu.siacs.conversations.axolotl\"/>"
+ "</message>");
+
+ QXmppMessage messageOmemo;
+ parsePacket(messageOmemo, xmlOmemo);
+ QCOMPARE(messageOmemo.encryptionMethodNs(), QString("eu.siacs.conversations.axolotl"));
+ QCOMPARE(messageOmemo.encryptionMethod(), QXmppMessage::OMEMO);
+ QCOMPARE(messageOmemo.encryptionName(), QString("OMEMO"));
+ serializePacket(messageOmemo, xmlOmemo);
+
+ // test custom encryption
+ const QByteArray xmlCustom(
+ "<message to=\"foo@example.com/QXmpp\" from=\"bar@example.com/QXmpp\" type=\"normal\">"
+ "<body>This message is encrypted with CustomCrypt, but your client doesn't seem to support that.</body>"
+ "<encryption xmlns=\"urn:xmpp:eme:0\" namespace=\"im:example:customcrypt:1\" name=\"CustomCrypt\"/>"
+ "</message>");
+
+ QXmppMessage messageCustom;
+ parsePacket(messageCustom, xmlCustom);
+ QCOMPARE(messageCustom.encryptionMethodNs(), QString("im:example:customcrypt:1"));
+ QCOMPARE(messageCustom.encryptionMethod(), QXmppMessage::UnknownEncryption);
+ QCOMPARE(messageCustom.encryptionName(), QString("CustomCrypt"));
+ serializePacket(messageCustom, xmlCustom);
+
+ // test setters/getters
+ QXmppMessage message;
+ message.setEncryptionMethod(QXmppMessage::LegacyOpenPGP);
+ QCOMPARE(message.encryptionMethod(), QXmppMessage::LegacyOpenPGP);
+ QCOMPARE(message.encryptionMethodNs(), QString("jabber:x:encrypted"));
+ QCOMPARE(message.encryptionName(), QString("Legacy OpenPGP"));
+
+ message.setEncryptionMethodNs("fancyorg:encryption:fancycrypt:0");
+ message.setEncryptionName("FancyCrypt");
+ QCOMPARE(message.encryptionMethod(), QXmppMessage::UnknownEncryption);
+ QCOMPARE(message.encryptionMethodNs(), QString("fancyorg:encryption:fancycrypt:0"));
+ QCOMPARE(message.encryptionName(), QString("FancyCrypt"));
+}
+
void tst_QXmppMessage::testSpoiler()
{
// test parsing with hint