74 lines
2.6 KiB
TypeScript
74 lines
2.6 KiB
TypeScript
import { expect } from '@wdio/globals';
|
|
|
|
import type { 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';
|
|
import { fetchJson } from '../../helpers/utils';
|
|
|
|
setTestProperties(__filename, {
|
|
requireWebhookProxy: true,
|
|
useJaas: true,
|
|
usesBrowsers: [ 'p1', 'p2' ]
|
|
});
|
|
|
|
describe('JaaS CHAT_UPLOADED webhook.', () => {
|
|
const tenant = testsConfig.jaas.tenant;
|
|
const customerId = tenant?.replace('vpaas-magic-cookie-', '');
|
|
let p1: Participant, p2: Participant;
|
|
let webhooksProxy: WebhookProxy;
|
|
let fqn: string;
|
|
|
|
it('setup', async () => {
|
|
const room = ctx.roomName;
|
|
|
|
webhooksProxy = ctx.webhooksProxy;
|
|
p1 = await joinJaasMuc({ name: 'p1', token: t({ room }) });
|
|
p2 = await joinJaasMuc({ name: 'p2', token: t({ room }) });
|
|
fqn = `${testsConfig.jaas.tenant}/${room}`;
|
|
});
|
|
|
|
it('test webhook', async () => {
|
|
await p1.getChatPanel().sendMessage('foo');
|
|
await p2.getChatPanel().sendMessage('bar');
|
|
await p1.getChatPanel().sendMessage('baz');
|
|
|
|
await p1.hangup();
|
|
await p2.hangup();
|
|
|
|
const event: {
|
|
appId: string;
|
|
customerId: string;
|
|
data: {
|
|
preAuthenticatedLink: string;
|
|
};
|
|
eventType: string;
|
|
fqn: string;
|
|
} = await webhooksProxy.waitForEvent('CHAT_UPLOADED');
|
|
|
|
expect(event.appId).toBe(tenant);
|
|
expect(event.customerId).toBe(customerId);
|
|
expect(event.data.preAuthenticatedLink).toBeDefined();
|
|
expect(event.eventType).toBe('CHAT_UPLOADED');
|
|
expect(event.fqn).toBe(fqn);
|
|
|
|
const uploadedChat: any = await fetchJson(event.data.preAuthenticatedLink);
|
|
|
|
expect(uploadedChat.meetingFqn).toBe(fqn);
|
|
expect(uploadedChat.messageType).toBe('CHAT');
|
|
|
|
const messages: any[] = uploadedChat.messages;
|
|
|
|
expect(messages).toBeDefined();
|
|
expect(messages.length).toBe(3);
|
|
console.log(JSON.stringify(messages));
|
|
expect(messages.some(m => m.name === 'p1' && m.content === 'foo')).toBe(true);
|
|
expect(messages.some(m => m.name === 'p2' && m.content === 'bar')).toBe(true);
|
|
expect(messages.some(m => m.name === 'p1' && m.content === 'baz')).toBe(true);
|
|
messages.forEach(m => {
|
|
expect(typeof m.timestamp).toBe('number');
|
|
});
|
|
});
|
|
});
|