Commit 161cbec0 authored by JC Brand's avatar JC Brand

For `forbidden` errors, show error message from server

parent b2a4ff7a
...@@ -5316,16 +5316,32 @@ ...@@ -5316,16 +5316,32 @@
view.onFormSubmitted(new Event('submit')); view.onFormSubmitted(new Event('submit'));
await new Promise(resolve => view.once('messageInserted', resolve)); await new Promise(resolve => view.once('messageInserted', resolve));
const stanza = u.toStanza(` let stanza = u.toStanza(`
<message xmlns="jabber:client" type="error" to="troll@montague.lit/resource" from="trollbox@montague.lit"> <message xmlns="jabber:client" type="error" to="troll@montague.lit/resource" from="trollbox@montague.lit">
<error type="auth"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error> <error type="auth"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error>
</message>`); </message>`);
_converse.connection._dataRecv(test_utils.createRequest(stanza)); _converse.connection._dataRecv(test_utils.createRequest(stanza));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelector('.chat-error').textContent.trim()).toBe(
"Your message was not delivered because you weren't allowed to send it.");
textarea.value = 'Hello again';
view.onFormSubmitted(new Event('submit'));
await new Promise(resolve => view.once('messageInserted', resolve)); await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelector('.chat-error').textContent.trim()).toBe( stanza = u.toStanza(`
"Your message was not delivered because you're not allowed to send messages in this groupchat."); <message xmlns="jabber:client" type="error" to="troll@montague.lit/resource" from="trollbox@montague.lit">
<error type="auth">
<forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
<text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Thou shalt not!</text>
</error>
</message>`);
_converse.connection._dataRecv(test_utils.createRequest(stanza));
await new Promise(resolve => view.once('messageInserted', resolve));
expect(view.el.querySelector('.message:last-child').textContent.trim()).toBe(
'Your message was not delivered because you weren\'t allowed to send it. '+
'The message from the server is: "Thou shalt not!"')
done(); done();
})); }));
......
...@@ -234,8 +234,12 @@ const stanza_utils = { ...@@ -234,8 +234,12 @@ const stanza_utils = {
getErrorMessage (stanza, is_muc, _converse) { getErrorMessage (stanza, is_muc, _converse) {
const { __ } = _converse; const { __ } = _converse;
if (is_muc) { if (is_muc) {
if (sizzle(`forbidden[xmlns="${Strophe.NS.STANZAS}"]`, stanza).length) { const forbidden = sizzle(`error forbidden[xmlns="${Strophe.NS.STANZAS}"]`, stanza).pop();
return __("Your message was not delivered because you're not allowed to send messages in this groupchat."); if (forbidden) {
const msg = __("Your message was not delivered because you weren't allowed to send it.");
const text = sizzle(`error text[xmlns="${Strophe.NS.STANZAS}"]`, stanza).pop();
const server_msg = text ? __('The message from the server is: "%1$s"', text.textContent) : '';
return server_msg ? `${msg} ${server_msg}` : msg;
} else if (sizzle(`not-acceptable[xmlns="${Strophe.NS.STANZAS}"]`, stanza).length) { } else if (sizzle(`not-acceptable[xmlns="${Strophe.NS.STANZAS}"]`, stanza).length) {
return __("Your message was not delivered because you're not present in the groupchat."); return __("Your message was not delivered because you're not present in the groupchat.");
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment