signaling
Version:
A simple signaling server for RoomRTC
85 lines (79 loc) • 2.75 kB
JavaScript
;
var test = require('tape');
var io = require('socket.io-client');
var socketUrl = 'http://localhost:8123';
var socketOption = {
transports: ['websocket'],
'force new connection': true
}
test('it should receive the number of members after join to a room', (t) => {
var clientA, clientB, clientC;
Promise.resolve(1)
.then(() => {
// client A require to join a pretty room
return new Promise((resolve, reject) => {
clientA = io.connect(socketUrl, socketOption);
clientA.on('connect', () => {
clientA.emit('join', 'prettyRoom', (err, roomData) => {
resolve(roomData);
});
});
});
})
.then((roomDataA) => {
t.equal(roomDataA.roomName, 'prettyRoom', 'clientA --> join to prettyRoom');
t.equal(roomDataA.roomCount, 0, 'clientA --> number of members in prettyRoom should be 0');
// client B require to join a pretty room
return new Promise((resolve, reject) => {
clientB = io.connect(socketUrl, socketOption);
clientB.on('connect', () => {
clientB.emit('join', 'prettyRoom', (err, roomData) => {
resolve(roomData);
});
});
});
})
.then((roomDataB) => {
t.equal(roomDataB.roomName, 'prettyRoom', 'clientB --> prettyRoom');
t.equal(roomDataB.roomCount, 1, 'clientB --> number of members in prettyRoom should be 1');
// client C require to join an other room
return new Promise((resolve, reject) => {
clientC = io.connect(socketUrl, socketOption);
clientC.on('connect', () => {
clientC.emit('join', 'otherRoom', (err, roomData) => {
resolve(roomData);
});
});
});
})
.then((roomDataC) => {
t.equal(roomDataC.roomName, 'otherRoom', 'clientC --> otherRoom');
t.equal(roomDataC.roomCount, 0, 'clientC --> number of members in otherRoom should be 0');
clientA.emit('bye');
clientB.emit('bye');
clientC.emit('bye');
t.end();
})
.catch(err => {
t.end(err);
})
});
test('it should receive an event "ready" after joinRoom successfully', (t) => {
var clientA;
t.plan(2);
Promise.resolve()
.then(() => {
// client A require to join a pretty room
clientA = io.connect(socketUrl, socketOption);
clientA.on('connect', () => {
clientA.emit('join', 'prettyRoom', (err, roomData) => {
t.equal(roomData.roomName, 'prettyRoom', 'clientA --> join to prettyRoom');
});
});
// wait for an event
clientA.on('ready', (data) => {
t.equal(data.roomName, 'prettyRoom', 'prettyRoom is ready to call');
clientA.emit('bye');
});
})
});