85 lines
2.9 KiB
TypeScript
85 lines
2.9 KiB
TypeScript
import { setTestProperties } from '../../helpers/TestProperties';
|
||
import { config as testsConfig } from '../../helpers/TestsConfig';
|
||
import { expectations } from '../../helpers/expectations';
|
||
import { joinMuc } from '../../helpers/joinMuc';
|
||
|
||
setTestProperties(__filename, {
|
||
usesBrowsers: [ 'p1' ]
|
||
});
|
||
|
||
describe('URL normalisation', () => {
|
||
// If we're not able to create conferences with a custom tenant, we'll only test the room name.
|
||
const useTenant = expectations.useTenant;
|
||
|
||
const tests = [
|
||
{
|
||
hint: '@ sign and .',
|
||
// Room as entered in the URL
|
||
room: '@example.com',
|
||
// Room as normalized in the URL
|
||
roomUrl: 'example.com',
|
||
// The room part of the MUC JID
|
||
roomJid: 'example.com',
|
||
// Tenant as entered in the URL
|
||
tenant: 'tenant@example.com',
|
||
// Tenant as normalized in the URL
|
||
tenantUrl: 'tenantexample.com',
|
||
// The tenant part of the MUC JID
|
||
tenantJid: 'tenantexample_com'
|
||
},
|
||
{
|
||
hint: 'Dashes',
|
||
room: 'foo-bar',
|
||
roomUrl: 'foo-bar',
|
||
roomJid: 'foo-bar',
|
||
tenant: 'tenant-example.com',
|
||
tenantUrl: 'tenant-example.com',
|
||
tenantJid: 'tenant-example_com'
|
||
},
|
||
{
|
||
hint: 'Cyrillic',
|
||
room: 'фоо-бар',
|
||
roomUrl: '%D1%84%D0%BE%D0%BE-%D0%B1%D0%B0%D1%80',
|
||
roomJid: '%d1%84%d0%be%d0%be-%d0%b1%d0%b0%d1%80',
|
||
tenant: 'обитател',
|
||
tenantUrl: '%D0%BE%D0%B1%D0%B8%D1%82%D0%B0%D1%82%D0%B5%D0%BB',
|
||
tenantJid: '%d0%be%d0%b1%d0%b8%d1%82%d0%b0%d1%82%d0%b5%d0%bb',
|
||
}
|
||
];
|
||
|
||
for (const test of tests) {
|
||
it(test.hint, async () => {
|
||
const fullRoom = `${test.room}${ctx.roomName}`;
|
||
const fullRoomUrl = `${test.roomUrl}${ctx.roomName}`;
|
||
const tenant = useTenant ? test.tenant : undefined;
|
||
|
||
const p = await joinMuc({
|
||
name: 'p1',
|
||
token: testsConfig.jwt.preconfiguredToken,
|
||
}, {
|
||
tenant: tenant,
|
||
roomName: fullRoom
|
||
});
|
||
|
||
const currentUrlStr = await p.driver.getUrl();
|
||
const currentUrl = new URL(currentUrlStr);
|
||
const path = currentUrl.pathname;
|
||
const parts = path.split('/');
|
||
|
||
if (useTenant) {
|
||
expect(parts[1]).toBe(test.tenantUrl);
|
||
}
|
||
expect(parts[2]).toBe(fullRoomUrl);
|
||
|
||
const mucJid = (await p.execute(() => APP.conference._room.room.roomjid)).split('@');
|
||
const roomJid = mucJid[0];
|
||
const domain = mucJid[1];
|
||
|
||
expect(roomJid).toBe(`${test.roomJid}${ctx.roomName}`);
|
||
if (useTenant) {
|
||
expect(domain.startsWith(`conference.${test.tenantJid}.`)).toBe(true);
|
||
}
|
||
});
|
||
}
|
||
});
|