|
@@ -3,6 +3,7 @@
|
|
|
} (this, function (jasmine, mock, test_utils) {
|
|
|
const _ = converse.env._,
|
|
|
$iq = converse.env.$iq,
|
|
|
+ $pres = converse.env.$pres,
|
|
|
Strophe = converse.env.Strophe,
|
|
|
sizzle = converse.env.sizzle,
|
|
|
u = converse.env.utils;
|
|
@@ -80,10 +81,48 @@
|
|
|
function (done, _converse) {
|
|
|
|
|
|
let view;
|
|
|
+ const IQ_stanzas = _converse.connection.IQ_stanzas;
|
|
|
const room_jid = 'coven@chat.shakespeare.lit';
|
|
|
- test_utils.openAndEnterChatRoom(_converse, 'coven', 'chat.shakespeare.lit', 'romeo')
|
|
|
+ _converse.api.rooms.open(room_jid, {'nick': 'romeo'})
|
|
|
.then(() => {
|
|
|
+ return test_utils.waitUntil(() => _.get(_.filter(
|
|
|
+ IQ_stanzas,
|
|
|
+ iq => iq.nodeTree.querySelector(
|
|
|
+ `iq[to="${room_jid}"] query[xmlns="http://jabber.org/protocol/disco#info"]`
|
|
|
+ )).pop(), 'nodeTree'));
|
|
|
+ }).then(stanza => {
|
|
|
+ const features_stanza = $iq({
|
|
|
+ 'from': room_jid,
|
|
|
+ 'id': stanza.getAttribute('id'),
|
|
|
+ 'to': 'dummy@localhost/desktop',
|
|
|
+ 'type': 'result'
|
|
|
+ }).c('query', { 'xmlns': 'http://jabber.org/protocol/disco#info'})
|
|
|
+ .c('identity', {
|
|
|
+ 'category': 'conference',
|
|
|
+ 'name': 'A Dark Cave',
|
|
|
+ 'type': 'text'
|
|
|
+ }).up()
|
|
|
+ .c('feature', {'var': 'http://jabber.org/protocol/muc'}).up()
|
|
|
+ .c('feature', {'var': 'jabber:iq:register'});
|
|
|
+ _converse.connection._dataRecv(test_utils.createRequest(features_stanza));
|
|
|
view = _converse.chatboxviews.get('coven@chat.shakespeare.lit');
|
|
|
+ return test_utils.waitUntil(() => (view.model.get('connection_status') === converse.ROOMSTATUS.CONNECTING));
|
|
|
+ }).then(stanza => {
|
|
|
+ // The user has just entered the room (because join was called)
|
|
|
+ // and receives their own presence from the server.
|
|
|
+ // See example 24: http://xmpp.org/extensions/xep-0045.html#enter-pres
|
|
|
+ const presence = $pres({
|
|
|
+ to: _converse.connection.jid,
|
|
|
+ from: room_jid,
|
|
|
+ id: u.getUniqueId()
|
|
|
+ }).c('x').attrs({xmlns:'http://jabber.org/protocol/muc#user'})
|
|
|
+ .c('item').attrs({
|
|
|
+ affiliation: 'owner',
|
|
|
+ jid: _converse.bare_jid,
|
|
|
+ role: 'moderator'
|
|
|
+ }).up()
|
|
|
+ .c('status').attrs({code:'110'});
|
|
|
+ _converse.connection._dataRecv(test_utils.createRequest(presence));
|
|
|
return test_utils.waitUntil(() => _.get(_.filter(
|
|
|
_converse.connection.IQ_stanzas,
|
|
|
iq => sizzle(`iq[to="coven@chat.shakespeare.lit"][type="get"] query[xmlns="jabber:iq:register"]`, iq.nodeTree).length
|