From 683a76cc80af872549ddc50b4eaf3e55b722389e Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Wed, 10 Aug 2022 17:24:35 +0200 Subject: [PATCH] test: Add test for sending multiple OMEMO messages --- test/omemo_test.dart | 57 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/test/omemo_test.dart b/test/omemo_test.dart index 5b6b20f..e39f95e 100644 --- a/test/omemo_test.dart +++ b/test/omemo_test.dart @@ -7,7 +7,6 @@ void main() { test('Test using OMEMO sessions with only one device per user', () async { const aliceJid = 'alice@server.example'; const bobJid = 'bob@other.server.example'; - // Alice and Bob generate their sessions var deviceModified = false; var ratchetModified = 0; @@ -367,4 +366,60 @@ void main() { // untrusted device. expect(aliceMessage.encryptedKeys.length, 1); }); + + test('Test by sending multiple messages back and forth', () async { + const aliceJid = 'alice@server.example'; + const bobJid = 'bob@other.server.example'; + // Alice and Bob generate their sessions + final aliceSession = await OmemoSessionManager.generateNewIdentity( + aliceJid, + AlwaysTrustingTrustManager(), + opkAmount: 1, + ); + final bobSession = await OmemoSessionManager.generateNewIdentity( + bobJid, + AlwaysTrustingTrustManager(), + opkAmount: 1, + ); + + // Alice encrypts a message for Bob + final aliceMessage = await aliceSession.encryptToJid( + bobJid, + 'Hello Bob!', + newSessions: [ + await (await bobSession.getDevice()).toBundle(), + ], + ); + + // Alice sends the message to Bob + // ... + + await bobSession.decryptMessage( + aliceMessage.ciphertext, + aliceJid, + (await aliceSession.getDevice()).id, + aliceMessage.encryptedKeys, + ); + + for (var i = 0; i < 100; i++) { + final messageText = 'Test Message #$i'; + // Bob responds to Alice + final bobResponseMessage = await bobSession.encryptToJid( + aliceJid, + messageText, + ); + + // Bob sends the message to Alice + // ... + + // Alice decrypts it + final aliceReceivedMessage = await aliceSession.decryptMessage( + bobResponseMessage.ciphertext, + bobJid, + (await bobSession.getDevice()).id, + bobResponseMessage.encryptedKeys, + ); + expect(messageText, aliceReceivedMessage); + } + }); }