TT#2723 Added videoroom tests.

Change-Id: Ibf6759613a85c4c28095b666e15126c3cd56db18
changes/24/9224/1
Hans-Peter Herzog 10 years ago
parent 8faba16b9b
commit cd515e1f5c

@ -114,16 +114,21 @@ module.exports = {
session_id: req.session_id,
transaction: req.transaction }
},
createVideoRoomHandle: function createVideoRoomHandle(req) {
createVideoRoomHandle: function createVideoRoomHandle(req, handle) {
return { janus: 'success',
session_id: req.session_id,
transaction: req.transaction,
data: { id: 1856019541 } };
data: { id: handle } };
}
},
handle: {
trickle: function detach(req) {
return { janus: 'ack',
session_id: req.session_id,
transaction: req.transaction}
},
detach: function detach(req) {
return { janus: 'success',
session_id: req.session_id,
@ -137,7 +142,7 @@ module.exports = {
},
videoRoomHandle: {
createVideoRoom: function createVideoRoom(req) {
create: function create(req) {
return { janus: 'success',
session_id: req.session_id,
sender: req.handle_id,
@ -145,6 +150,34 @@ module.exports = {
plugindata:
{ plugin: 'janus.plugin.videoroom',
data: { videoroom: 'created', room: 2146929290 } } }
},
destroy: function destroy(req) {
return { janus: 'success',
session_id: req.session_id,
sender: req.handle_id,
transaction: req.transaction,
plugindata:
{ plugin: 'janus.plugin.videoroom',
data: { videoroom: 'created', room: 2146929290 } } }
},
list: function list(req) {
return { janus: 'success',
session_id: req.session_id,
sender: req.handle_id,
transaction: req.transaction,
plugindata:
{ plugin: 'janus.plugin.videoroom',
data: { videoroom: 'success', list: [
{ room: 2146929290,
description: 'Room 1790787516',
max_publishers: 3,
bitrate: 0,
fir_freq: 0,
audiocodec: 'opus',
videocodec: 'vp8',
record: 'false',
num_participants: 0 }
] } } }
}
}
};

@ -18,6 +18,10 @@ class JanusServer {
server: this.http
});
this.ws.on('connection',(webSocket)=>{ this.triggerConnection(webSocket); });
this.handlesByName = {
'janus.plugin.videoroom': 773735142
};
this.handlesById = _.invert(this.handlesByName);
}
init() {
@ -69,7 +73,8 @@ class JanusServer {
case 'attach':
switch(object.plugin) {
case 'janus.plugin.videoroom':
this.send(webSocket, JanusResponse.session.createVideoRoomHandle(object));
this.send(webSocket, JanusResponse.session.createVideoRoomHandle(
object, this.handlesByName[object.plugin]));
break;
}
break;
@ -79,11 +84,36 @@ class JanusServer {
case 'hangup':
this.send(webSocket, JanusResponse.handle.hangup(object));
break;
case 'trickle':
this.send(webSocket, JanusResponse.handle.trickle(object));
break;
case 'message':
var plugin = this.handlesById[object.handle_id];
switch(plugin) {
case 'janus.plugin.videoroom':
this.dispatchVideoRoom(webSocket, object);
break;
}
break;
default:
break;
}
}
dispatchVideoRoom(webSocket, object) {
switch(object.body.request) {
case 'create':
this.send(webSocket, JanusResponse.videoRoomHandle.create(object));
break;
case 'destroy':
this.send(webSocket, JanusResponse.videoRoomHandle.destroy(object));
break;
case 'list':
this.send(webSocket, JanusResponse.videoRoomHandle.list(object));
break;
}
}
send(webSocket, response) {
webSocket.send(JSON.stringify(response));
}

@ -1,3 +1,3 @@
module.exports.VideoRoom = require('./videoroom/handle').VideoRoomHandle;
module.exports.VideoRoom = require('./videoroom').VideoRoomHandle;

@ -6,6 +6,7 @@ var PluginHandle = require('../plugin-handle').PluginHandle;
var VideoRoom = require('./room').VideoRoom;
var PluginError = require('../../errors').PluginError;
var logger = require('debug-logger')('janus:videoroom:handle');
var Publisher = require('./publisher').Publisher;
/**
* @class
@ -34,6 +35,19 @@ class VideoRoomHandle extends PluginHandle {
});
}
destroy(room) {
return new Promise((resolve, reject)=>{
this.requestMessage({
request: 'destroy',
room: room
}).then(()=>{
resolve();
}).catch((err)=>{
reject(err);
});
});
}
list() {
return new Promise((resolve, reject)=>{
this.requestMessage({

@ -60,8 +60,51 @@ describe('PluginHandle', function(){
});
});
it('should trickle', function(done) {
handle.trickle().then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
it('should complete trickle', function(done) {
handle.trickleCompleted().then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
describe('VideoRoomHandle', function() {
it('should create a new room', function(done){
handle.create().then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
it('should destroy a room', function(done) {
done();
});
it('should check whether a room exists or not', function(done) {
done();
});
it('should list all rooms', function(done) {
handle.list().then((list)=>{
assert.isArray(list);
done();
}).catch((err)=>{
done(err);
});
});
it('should list all participants', function(done) {
done();
});
});
});

@ -4,7 +4,7 @@ var config = require('./config').config;
var JanusServerMock = require('../src/mock/janus-server').JanusServer;
var Client = require('../src/client').Client;
var Session = require('../src/session').Session;
var VideoRoomHandle = require('../src/plugins/videoroom/handle').VideoRoomHandle;
var VideoRoomHandle = require('../src/plugins').VideoRoom;
var assert = require('chai').assert;
var mockServerPort = config.janus.server.port;

Loading…
Cancel
Save