(function (root, factory) { define([ "jasmine", "mock", "test-utils" ], factory); } (this, function (jasmine, mock, test_utils) { "use strict"; var $msg = converse.env.$msg, _ = converse.env._, utils = converse.env.utils; describe("A headlines box", function () { it("will not open nor display non-headline messages", mock.initConverse((done, _converse) => { /* XMPP spam message: * * * -wwdmz * SORRY FOR THIS ADVERT * SIEVE * <juliet@example.com> You got mail. * * * imap://romeo@example.com/INBOX;UIDVALIDITY=385759043/;UID=18 * * * */ sinon.spy(utils, 'isHeadlineMessage'); const stanza = $msg({ 'type': 'headline', 'from': 'notify.example.com', 'to': 'dummy@localhost', 'xml:lang': 'en' }) .c('subject').t('SIEVE').up() .c('body').t('<juliet@example.com> You got mail.').up() .c('x', {'xmlns': 'jabber:x:oob'}) .c('url').t('imap://romeo@example.com/INBOX;UIDVALIDITY=385759043/;UID=18'); _converse.connection._dataRecv(test_utils.createRequest(stanza)); expect( _.includes( _converse.chatboxviews.keys(), 'notify.example.com') ).toBeTruthy(); expect(utils.isHeadlineMessage.called).toBeTruthy(); expect(utils.isHeadlineMessage.returned(true)).toBeTruthy(); utils.isHeadlineMessage.restore(); // unwraps // Headlines boxes don't show an avatar const view = _converse.chatboxviews.get('notify.example.com'); expect(view.model.get('show_avatar')).toBeFalsy(); expect(view.el.querySelector('img.avatar')).toBe(null); done(); })); it("will not show a headline messages from a full JID if allow_non_roster_messaging is false", mock.initConverse((done, _converse) => { _converse.allow_non_roster_messaging = false; sinon.spy(utils, 'isHeadlineMessage'); var stanza = $msg({ 'type': 'headline', 'from': 'andre5114@jabber.snc.ru/Spark', 'to': 'dummy@localhost', 'xml:lang': 'en' }) .c('nick').t('gpocy').up() .c('body').t('Здравствуйте друзья'); _converse.connection._dataRecv(test_utils.createRequest(stanza)); expect(_.without('controlbox', _converse.chatboxviews.keys()).length).toBe(0); expect(utils.isHeadlineMessage.called).toBeTruthy(); expect(utils.isHeadlineMessage.returned(true)).toBeTruthy(); utils.isHeadlineMessage.restore(); // unwraps done(); })); }); }));