Updates #2849: add test for incoming MUC OMEMO corrections
This commit is contained in:
parent
7355c2c5fe
commit
fbfd6c3ac4
@ -376,8 +376,8 @@ describe("An OMEMO encrypted MUC message", function() {
|
|||||||
await u.waitUntil(() => view.querySelector('.chat-msg__text').textContent.replace(/<!-.*?->/g, '') === new_text);
|
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 doesn’t seem to support. Find more information on https://conversations.im/omemo';
|
const fallback_text = 'This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo';
|
||||||
const older_versions = first_msg.get('older_versions');
|
let older_versions = first_msg.get('older_versions');
|
||||||
const keys = Object.keys(older_versions);
|
let keys = Object.keys(older_versions);
|
||||||
expect(keys.length).toBe(1);
|
expect(keys.length).toBe(1);
|
||||||
expect(older_versions[keys[0]]).toBe(original_text);
|
expect(older_versions[keys[0]]).toBe(original_text);
|
||||||
expect(first_msg.get('plaintext')).toBe(new_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"/>`+
|
`<store xmlns="urn:xmpp:hints"/>`+
|
||||||
`<encryption namespace="eu.siacs.conversations.axolotl" xmlns="urn:xmpp:eme:0"/>`+
|
`<encryption namespace="eu.siacs.conversations.axolotl" xmlns="urn:xmpp:eme:0"/>`+
|
||||||
`</message>`);
|
`</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);
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user