Updates #2849: add test for incoming MUC OMEMO corrections

This commit is contained in:
JC Brand 2022-03-23 21:30:53 +01:00
parent 7355c2c5fe
commit fbfd6c3ac4

View File

@ -376,8 +376,8 @@ describe("An OMEMO encrypted MUC message", function() {
await u.waitUntil(() => view.querySelector('.chat-msg__text').textContent.replace(/<!-.*?->/g, '') === new_text);
const fallback_text = 'This is an OMEMO encrypted message which your client doesnt seem to support. Find more information on https://conversations.im/omemo';
const older_versions = first_msg.get('older_versions');
const keys = Object.keys(older_versions);
let older_versions = first_msg.get('older_versions');
let keys = Object.keys(older_versions);
expect(keys.length).toBe(1);
expect(older_versions[keys[0]]).toBe(original_text);
expect(first_msg.get('plaintext')).toBe(new_text);
@ -405,6 +405,60 @@ describe("An OMEMO encrypted MUC message", function() {
`<store xmlns="urn:xmpp:hints"/>`+
`<encryption namespace="eu.siacs.conversations.axolotl" xmlns="urn:xmpp:eme:0"/>`+
`</message>`);
}));
// Test reception of an encrypted message
const first_received_id = _converse.connection.getUniqueId()
const first_received_message = 'This is an encrypted message from the contact';
const first_obj = await omemo.encryptMessage(first_received_message)
_converse.connection._dataRecv(mock.createRequest($msg({
'from': `${muc_jid}/newguy`,
'to': _converse.connection.jid,
'type': 'groupchat',
'id': first_received_id
}).c('body').t(fallback_text).up()
.c('encrypted', {'xmlns': Strophe.NS.OMEMO})
.c('header', {'sid': '555'})
.c('key', {'rid': _converse.omemo_store.get('device_id')}).t(u.arrayBufferToBase64(first_obj.key_and_tag)).up()
.c('iv').t(first_obj.iv)
.up().up()
.c('payload').t(first_obj.payload)));
await new Promise(resolve => view.model.messages.once('rendered', resolve));
expect(view.model.messages.length).toBe(2);
expect(view.querySelectorAll('.chat-msg__body')[1].textContent.trim()).toBe(first_received_message);
expect(_converse.devicelists.length).toBe(2);
expect(_converse.devicelists.at(0).get('jid')).toBe(_converse.bare_jid);
expect(_converse.devicelists.at(1).get('jid')).toBe(contact_jid);
const second_received_message = 'This is an edited encrypted message from the contact';
const second_obj = await omemo.encryptMessage(second_received_message)
_converse.connection._dataRecv(mock.createRequest($msg({
'from': `${muc_jid}/newguy`,
'to': _converse.connection.jid,
'type': 'groupchat',
'id': _converse.connection.getUniqueId()
}).c('body').t(fallback_text).up()
.c('replace', {'id':first_received_id, 'xmlns': 'urn:xmpp:message-correct:0'})
.c('encrypted', {'xmlns': Strophe.NS.OMEMO})
.c('header', {'sid': '555'})
.c('key', {'rid': _converse.omemo_store.get('device_id')}).t(u.arrayBufferToBase64(second_obj.key_and_tag)).up()
.c('iv').t(second_obj.iv)
.up().up()
.c('payload').t(second_obj.payload)));
await new Promise(resolve => view.model.messages.once('rendered', resolve));
expect(view.model.messages.length).toBe(2);
expect(view.querySelectorAll('.chat-msg__body')[1].textContent.trim()).toBe(second_received_message);
const message = view.model.messages.at(1);
older_versions = message.get('older_versions');
keys = Object.keys(older_versions);
expect(keys.length).toBe(1);
expect(older_versions[keys[0]]).toBe('This is an encrypted message from the contact');
expect(message.get('plaintext')).toBe('This is an edited encrypted message from the contact');
expect(message.get('is_encrypted')).toBe(true);
expect(message.get('body')).toBe(fallback_text);
expect(message.get('msgid')).toBe(first_received_id);
}));
});