snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
This commit is contained in:
140
tests/specs/jaas/visitors/visitorTokens.spec.ts
Normal file
140
tests/specs/jaas/visitors/visitorTokens.spec.ts
Normal file
@@ -0,0 +1,140 @@
|
||||
import { Participant } from '../../../helpers/Participant';
|
||||
import { setTestProperties } from '../../../helpers/TestProperties';
|
||||
import { config as testsConfig } from '../../../helpers/TestsConfig';
|
||||
import WebhookProxy from '../../../helpers/WebhookProxy';
|
||||
import { joinJaasMuc, generateJaasToken as t } from '../../../helpers/jaas';
|
||||
|
||||
setTestProperties(__filename, {
|
||||
requireWebhookProxy: true,
|
||||
useJaas: true,
|
||||
usesBrowsers: [ 'p1', 'p2', 'p3' ]
|
||||
});
|
||||
|
||||
describe('Visitors triggered by visitor tokens', () => {
|
||||
let webhooksProxy: WebhookProxy;
|
||||
let room: string;
|
||||
|
||||
async function verifyJoinedWebhook(participant: Participant) {
|
||||
const context = participant.getToken()?.payload.context;
|
||||
const event: {
|
||||
customerId: string;
|
||||
data: {
|
||||
avatar: string;
|
||||
email: string;
|
||||
group: string;
|
||||
id: string;
|
||||
name: string;
|
||||
participantJid: string;
|
||||
role: string;
|
||||
};
|
||||
eventType: string;
|
||||
} = await webhooksProxy.waitForEvent('PARTICIPANT_JOINED');
|
||||
|
||||
expect('PARTICIPANT_JOINED').toBe(event.eventType);
|
||||
expect(event.data.avatar).toBe(context.user.avatar);
|
||||
expect(event.data.email).toBe(context.user.email);
|
||||
expect(event.data.id).toBe(context.user.id);
|
||||
expect(event.data.group).toBe(context.group);
|
||||
expect(event.data.name).toBe(context.user.name);
|
||||
if (context.user.visitor) {
|
||||
expect(event.data.participantJid.indexOf('meet.jitsi') != -1).toBe(true);
|
||||
expect(event.data.role).toBe('visitor');
|
||||
}
|
||||
expect(event.customerId).toBe(testsConfig.jaas.customerId);
|
||||
}
|
||||
|
||||
async function verifyLeftWebhook(participant: Participant) {
|
||||
const context = participant.getToken()?.payload.context;
|
||||
const eventLeft: {
|
||||
customerId: string;
|
||||
data: {
|
||||
avatar: string;
|
||||
email: string;
|
||||
group: string;
|
||||
id: string;
|
||||
name: string;
|
||||
participantJid: string;
|
||||
role: string;
|
||||
};
|
||||
eventType: string;
|
||||
} = await webhooksProxy.waitForEvent('PARTICIPANT_LEFT');
|
||||
|
||||
expect('PARTICIPANT_LEFT').toBe(eventLeft.eventType);
|
||||
expect(eventLeft.data.avatar).toBe(context.user.avatar);
|
||||
expect(eventLeft.data.email).toBe(context.user.email);
|
||||
expect(eventLeft.data.id).toBe(context.user.id);
|
||||
expect(eventLeft.data.group).toBe(context.group);
|
||||
expect(eventLeft.data.name).toBe(context.user.name);
|
||||
if (context.user.visitor) {
|
||||
expect(eventLeft.data.participantJid.indexOf('meet.jitsi') != -1).toBe(true);
|
||||
expect(eventLeft.data.role).toBe('visitor');
|
||||
}
|
||||
expect(eventLeft.customerId).toBe(testsConfig.jaas.customerId);
|
||||
}
|
||||
|
||||
it('setup', async () => {
|
||||
webhooksProxy = ctx.webhooksProxy;
|
||||
webhooksProxy.defaultMeetingSettings = {
|
||||
visitorsEnabled: true
|
||||
};
|
||||
room = ctx.roomName;
|
||||
});
|
||||
|
||||
it('test visitor tokens', async () => {
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
const moderatorToken = t({ room, displayName: 'Mo de Rator', moderator: true });
|
||||
const moderator = await joinJaasMuc({ name: 'p1', token: moderatorToken });
|
||||
|
||||
expect(await moderator.isInMuc()).toBe(true);
|
||||
expect(await moderator.isModerator()).toBe(true);
|
||||
expect(await moderator.isVisitor()).toBe(false);
|
||||
await verifyJoinedWebhook(moderator);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
// Joining with a participant token before any visitors
|
||||
const participantToken = t({ room, displayName: 'Parti Cipant' });
|
||||
const participant = await joinJaasMuc({ name: 'p2', token: participantToken });
|
||||
|
||||
expect(await participant.isInMuc()).toBe(true);
|
||||
expect(await participant.isModerator()).toBe(false);
|
||||
expect(await participant.isVisitor()).toBe(false);
|
||||
await verifyJoinedWebhook(participant);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
// Joining with a visitor token
|
||||
const visitorToken = t({ room, displayName: 'Visi Tor', visitor: true });
|
||||
const visitor = await joinJaasMuc({ name: 'p3', token: visitorToken });
|
||||
|
||||
expect(await visitor.isInMuc()).toBe(true);
|
||||
expect(await visitor.isModerator()).toBe(false);
|
||||
expect(await visitor.isVisitor()).toBe(true);
|
||||
await verifyJoinedWebhook(visitor);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
await participant.hangup();
|
||||
await verifyLeftWebhook(participant);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
// Joining with a participant token after visitors -> visitor
|
||||
const participantToken2 = t({ room, displayName: 'Visi Tor 2' });
|
||||
const visitor2 = await joinJaasMuc({ name: 'p2', token: participantToken2 });
|
||||
|
||||
expect(await visitor2.isInMuc()).toBe(true);
|
||||
expect(await visitor2.isModerator()).toBe(false);
|
||||
expect(await visitor2.isVisitor()).toBe(true);
|
||||
await verifyJoinedWebhook(visitor2);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
await visitor.hangup();
|
||||
await verifyLeftWebhook(visitor);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
await visitor2.hangup();
|
||||
await verifyLeftWebhook(visitor2);
|
||||
|
||||
webhooksProxy.clearCache();
|
||||
await moderator.hangup();
|
||||
await verifyLeftWebhook(moderator);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user