You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
janus-client/test/client-spec.js

212 lines
5.6 KiB

'use strict';
var config = require('./config').config;
var JanusServerMock = require('../src/mock/janus-server').JanusServer;
var Client = require('../src/client').Client;
var ConnectionState = require('../src/client').ConnectionState;
var ConnectionStateError = require('../src/client').ConnectionStateError;
var Session = require('../src/session').Session;
var assert = require('chai').assert;
var request = {
janus: 'info'
};
var mockServerPort = config.janus.server.port;
var mockServerUrl = config.janus.server.url;
describe('Client', function() {
var janusServerMock;
before(function(done){
janusServerMock = new JanusServerMock({
port: mockServerPort
});
janusServerMock.init().then(()=>{
done();
}).catch(()=>{
done(err);
});
});
after(function(){
janusServerMock.close();
});
it('should connect to websocket endpoint', function(done) {
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
assert.isString(client.getVersion());
assert.notEqual(client.getVersion(), '');
assert.equal(client.isConnected(), true);
assert.equal(client.getConnectionState(), ConnectionState.connected);
done();
});
client.onError((err)=>{
done(err);
});
client.connect();
});
it('should disconnect gracefully', function(done) {
var client = new Client({
url: mockServerUrl,
reconnect: false
});
client.onConnected(()=>{
client.disconnect();
});
client.onDisconnected(()=>{
assert.equal(client.isConnected(), false);
assert.equal(client.getConnectionState(), ConnectionState.disconnected);
done();
});
client.connect();
});
it('should connect and timeout', function(done) {
var client = new Client({
url: mockServerUrl,
reconnect: false
});
client.onConnected(()=>{
client.setConnectionTimeout(100);
});
client.onDisconnected(()=>{
done();
});
client.connect();
});
it('should reconnect after timeout', function(done) {
var connects = 0;
var finished = false;
var client = new Client({
url: mockServerUrl,
reconnect: true,
connectionTimeout: 100
});
client.onConnected(()=>{
connects++;
finished = connects === 2;
if(finished) {
client.disconnect();
}
});
client.onDisconnected(()=>{
if(finished) {
done();
}
});
client.connect();
});
it('should fail sending an object, because client is disconnected', function(done){
var client = new Client({
url: mockServerUrl
});
client.sendObject(request).then(()=>{
done(new Error());
}).catch((err)=>{
assert.equal(client.isConnected(), false);
assert.equal(client.getConnectionState(), ConnectionState.disconnected);
assert.instanceOf(err, ConnectionStateError);
done();
});
});
it('should send an object', function(done){
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
client.sendObject(request).then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
client.connect();
});
it('should create new transaction', function(done){
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
client.createTransaction({
request: {
janus: 'create'
},
client: client,
ack: false
}).onResponse((res)=>{
assert.equal(res.isSuccess(), true);
done();
}).start();
});
client.connect();
});
it('should do a request', function(done){
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
client.request({
janus: 'info'
}).then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
client.connect();
});
it('should fetch info from janus', function(done){
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
client.getInfo().then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
client.connect();
});
it('should create new session', function(done){
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
client.createSession().then((session)=>{
assert.instanceOf(session, Session);
done();
}).catch((err)=>{
done(err);
});
});
client.connect();
});
it('should destroy session', function(done){
var client = new Client({
url: mockServerUrl
});
client.onConnected(()=>{
client.destroySession(1424579626).then(()=>{
done();
}).catch((err)=>{
done(err);
});
});
client.connect();
});
});