pubsub: await IQ response when publishing

This commit is contained in:
JC Brand 2020-09-18 12:55:24 +02:00
parent 5949d29460
commit 32847e860f
2 changed files with 20 additions and 6 deletions

View File

@ -57,6 +57,7 @@ async function initializedOMEMO (_converse) {
'to': _converse.bare_jid, 'to': _converse.bare_jid,
'type': 'result'}); 'type': 'result'});
_converse.connection._dataRecv(mock.createRequest(stanza)); _converse.connection._dataRecv(mock.createRequest(stanza));
iq_stanza = await u.waitUntil(() => bundleHasBeenPublished(_converse)) iq_stanza = await u.waitUntil(() => bundleHasBeenPublished(_converse))
stanza = $iq({ stanza = $iq({
@ -69,7 +70,7 @@ async function initializedOMEMO (_converse) {
} }
describe("The OMEMO module", function() { fdescribe("The OMEMO module", function() {
it("adds methods for encrypting and decrypting messages via AES GCM", it("adds methods for encrypting and decrypting messages via AES GCM",
mock.initConverse( mock.initConverse(
@ -244,7 +245,8 @@ describe("The OMEMO module", function() {
await u.waitUntil(() => initializedOMEMO(_converse)); await u.waitUntil(() => initializedOMEMO(_converse));
const toolbar = view.el.querySelector('.chat-toolbar'); const toolbar = view.el.querySelector('.chat-toolbar');
toolbar.querySelector('.toggle-omemo').click(); const el = await u.waitUntil(() => toolbar.querySelector('.toggle-omemo'));
el.click();
expect(view.model.get('omemo_active')).toBe(true); expect(view.model.get('omemo_active')).toBe(true);
// newguy enters the room // newguy enters the room
@ -433,7 +435,19 @@ describe("The OMEMO module", function() {
</sent> </sent>
</message> </message>
`); `);
_converse.connection.IQ_stanzas = [];
_converse.connection._dataRecv(mock.createRequest(carbon)); _converse.connection._dataRecv(mock.createRequest(carbon));
// The message received is a prekey message, so missing prekeys are
// generated and a new bundle published.
iq_stanza = await u.waitUntil(() => bundleHasBeenPublished(_converse));
const result_iq = $iq({
'from': _converse.bare_jid,
'id': iq_stanza.getAttribute('id'),
'to': _converse.bare_jid,
'type': 'result'});
_converse.connection._dataRecv(mock.createRequest(result_iq));
await new Promise(resolve => view.model.messages.once('rendered', resolve)); await new Promise(resolve => view.model.messages.once('rendered', resolve));
expect(view.model.messages.length).toBe(1); expect(view.model.messages.length).toBe(1);
@ -501,7 +515,7 @@ describe("The OMEMO module", function() {
_converse.connection._dataRecv(mock.createRequest(stanza)); _converse.connection._dataRecv(mock.createRequest(stanza));
const toolbar = view.el.querySelector('.chat-toolbar'); const toolbar = view.el.querySelector('.chat-toolbar');
const toggle = toolbar.querySelector('.toggle-omemo'); const toggle = await u.waitUntil(() => toolbar.querySelector('.toggle-omemo'));
toggle.click(); toggle.click();
expect(view.model.get('omemo_active')).toBe(true); expect(view.model.get('omemo_active')).toBe(true);
expect(view.model.get('omemo_supported')).toBe(true); expect(view.model.get('omemo_supported')).toBe(true);
@ -1283,7 +1297,7 @@ describe("The OMEMO module", function() {
await u.waitUntil(() => initializedOMEMO(_converse)); await u.waitUntil(() => initializedOMEMO(_converse));
const toolbar = view.el.querySelector('.chat-toolbar'); const toolbar = view.el.querySelector('.chat-toolbar');
let toggle = toolbar.querySelector('.toggle-omemo'); let toggle = await u.waitUntil(() => toolbar.querySelector('.toggle-omemo'));
expect(view.model.get('omemo_active')).toBe(undefined); expect(view.model.get('omemo_active')).toBe(undefined);
expect(view.model.get('omemo_supported')).toBe(true); expect(view.model.get('omemo_supported')).toBe(true);
await u.waitUntil(() => !toggle.disabled); await u.waitUntil(() => !toggle.disabled);

View File

@ -66,7 +66,7 @@ converse.plugins.add('converse-pubsub', {
} }
} }
try { try {
api.sendIQ(stanza); await api.sendIQ(stanza);
} catch (iq) { } catch (iq) {
if (iq instanceof Element && if (iq instanceof Element &&
strict_options && strict_options &&
@ -77,7 +77,7 @@ converse.plugins.add('converse-pubsub', {
const el = stanza.nodeTree; const el = stanza.nodeTree;
el.querySelector('publish-options').outerHTML = ''; el.querySelector('publish-options').outerHTML = '';
log.warn(`PubSub: Republishing without publish options. ${el.outerHTML}`); log.warn(`PubSub: Republishing without publish options. ${el.outerHTML}`);
api.sendIQ(el); await api.sendIQ(el);
} else { } else {
throw iq; throw iq;
} }