snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
This commit is contained in:
76
tests/prosody/mod_jiconop_spec.js
Normal file
76
tests/prosody/mod_jiconop_spec.js
Normal file
@@ -0,0 +1,76 @@
|
||||
import assert from 'assert';
|
||||
|
||||
import { createXmppClient } from './helpers/xmpp_client.js';
|
||||
|
||||
const DISCO_INFO_NS = 'http://jabber.org/protocol/disco#info';
|
||||
|
||||
describe('mod_jiconop', () => {
|
||||
|
||||
const clients = [];
|
||||
|
||||
afterEach(async () => {
|
||||
await Promise.all(clients.map(c => c.disconnect()));
|
||||
clients.length = 0;
|
||||
});
|
||||
|
||||
/**
|
||||
* Connects a client and waits for the unsolicited jiconop message.
|
||||
*
|
||||
* @returns {Promise<{client: object, msg: object}>}
|
||||
*/
|
||||
async function connectAndGetJiconop() {
|
||||
const c = await createXmppClient();
|
||||
|
||||
clients.push(c);
|
||||
|
||||
const msg = await c.waitForMessage(m => m.getChild('query', DISCO_INFO_NS) !== null);
|
||||
|
||||
return { client: c,
|
||||
msg };
|
||||
}
|
||||
|
||||
it('sends an unsolicited message with a disco#info query on connect', async () => {
|
||||
const { msg } = await connectAndGetJiconop();
|
||||
|
||||
assert.ok(msg, 'must receive a message stanza after bind');
|
||||
assert.ok(msg.getChild('query', DISCO_INFO_NS),
|
||||
'message must contain <query xmlns="http://jabber.org/protocol/disco#info">');
|
||||
});
|
||||
|
||||
it('message is addressed to the client full JID', async () => {
|
||||
const { client,
|
||||
msg } = await connectAndGetJiconop();
|
||||
|
||||
assert.equal(msg.attrs.to, client.jid, 'message must be addressed to the client full JID');
|
||||
});
|
||||
|
||||
it('query contains shard identity', async () => {
|
||||
const { msg } = await connectAndGetJiconop();
|
||||
const query = msg.getChild('query', DISCO_INFO_NS);
|
||||
const identities = query.getChildren('identity');
|
||||
const shard = identities.find(i => i.attrs.category === 'server' && i.attrs.type === 'shard');
|
||||
|
||||
assert.ok(shard, 'query must contain a server/shard identity');
|
||||
assert.equal(shard.attrs.name, 'test-shard');
|
||||
});
|
||||
|
||||
it('query contains region identity', async () => {
|
||||
const { msg } = await connectAndGetJiconop();
|
||||
const query = msg.getChild('query', DISCO_INFO_NS);
|
||||
const identities = query.getChildren('identity');
|
||||
const region = identities.find(i => i.attrs.category === 'server' && i.attrs.type === 'region');
|
||||
|
||||
assert.ok(region, 'query must contain a server/region identity');
|
||||
assert.equal(region.attrs.name, 'test-region');
|
||||
});
|
||||
|
||||
it('query contains release identity', async () => {
|
||||
const { msg } = await connectAndGetJiconop();
|
||||
const query = msg.getChild('query', DISCO_INFO_NS);
|
||||
const identities = query.getChildren('identity');
|
||||
const release = identities.find(i => i.attrs.category === 'server' && i.attrs.type === 'release');
|
||||
|
||||
assert.ok(release, 'query must contain a server/release identity');
|
||||
assert.equal(release.attrs.name, 'test-release');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user