UNPKG

xmpp-ftw-mam

Version:
85 lines (69 loc) 2.44 kB
'use strict'; var Mam = require('../../index') , ltx = require('ltx') , helper = require('../helper') /* jshint -W030 */ describe('Mam', function() { var mam, socket, xmpp, manager before(function() { socket = new helper.SocketEventer() xmpp = new helper.XmppEventer() manager = { socket: socket, client: xmpp, trackId: function(id, callback) { if (typeof id !== 'object') throw new Error('Stanza ID spoofing protection not in place') this.callback = callback }, makeCallback: function(error, data) { this.callback(error, data) } } mam = new Mam() mam.init(manager) }) beforeEach(function() { socket.removeAllListeners() xmpp.removeAllListeners() mam.init(manager) }) describe('Handles', function() { it('Returns false for IQ stanzas', function() { mam.handles(ltx.parse('<iq/>')).should.be.false }) it('Returns false for message stanzas', function() { mam.handles(ltx.parse('<message/>')).should.be.false }) it('Returns true for MAM result messages', function() { mam.handles(ltx.parse( '<message><result xmlns="' + mam.NS + '"/></message>' )).should.be.true }) }) describe('Handle', function() { it('Handles archived message', function(done) { socket.on('xmpp.mam.message', function(data) { data.from.should.eql({ domain: 'shakespeare.lit', user: 'romeo', resource: 'desktop' }) data.content.should.equal('Message') data.format.should.equal('plain') data.delay.when.should.equal('2010-07-10T23:08:25Z') data.id.should.equal('message:1') data.mam.queryId.should.equal('queryid:1') data.mam.to.should.eql({ domain: 'shakespeare.lit', user: 'juliet', resource: 'hallroom' }) data.mam.id.should.equal('result:1') done() }) mam.handle(helper.getStanza('message')) .should.be.true }) }) })