TT#2723 Added unit tests to cover the client

Change-Id: Ie2b46403c9e0d084fa18fe6fe6bfdba67d72ec2a
changes/01/9001/1
Hans-Peter Herzog 10 years ago
parent 454138caf8
commit 93a7d3f7aa

@ -3,7 +3,7 @@
"version": "1.0.0",
"main": "src/janus.js",
"scripts": {
"test": "mocha -R spec --delay test/*Spec.js"
"test": "mocha -R spec --ui bdd --full-trace test/*Spec.js"
},
"author": "",
"license": "ISC",

@ -39,7 +39,7 @@ class Client {
this.logger = options.logger || logger || console;
this.requestTimeout = options.requestTimeout || 6000;
this.protocol = 'janus-protocol';
this.webSocket = null;
this.webSocket = options.webSocket || null;
this.connectionState = ConnectionState.DISCONNECTED;
this.emitter = new EventEmitter();
this.transactions = {};
@ -61,7 +61,11 @@ class Client {
}
connect() {
this.webSocket = new WebSocket(this.url, this.protocol);
if(this.webSocket === null) {
this.webSocket = new WebSocket(this.url, this.protocol);
}
this.webSocket.on(WebSocketEvent.open, ()=>{
this.webSocketOpen();
});

@ -0,0 +1,44 @@
'use strict';
var EventEmitter = require('events').EventEmitter;
var logger = require('debug-logger')('wsMock');
class WebSocketMock {
constructor() {
this.emitter = new EventEmitter();
process.nextTick(()=>{
this.triggerOpen();
});
}
close() {
logger.info('Close');
setTimeout(()=>{
this.emitter.emit('close');
}, 500);
}
on(event, listener) {
this.emitter.on(event, listener);
}
send(message, cb) {
setTimeout(()=>{
cb();
this.triggerMessage(message);
}, 500);
}
triggerOpen() {
setTimeout(()=>{
this.emitter.emit('open');
}, 500);
}
triggerMessage(message) {
this.emitter.emit('message', message);
}
}
module.exports.WebSocketMock = WebSocketMock;

@ -1,23 +1,73 @@
'use strict';
var Janus = require('../src/janus').Janus;
var WebSocketServer = require('ws').Server;
var WebServer = require('http').createServer;
var Plugins = require('../src/constants').Plugins;
var server = WebServer();
var webSocketServer = new WebSocketServer({
server: server
});
var Transaction = require('../src/transaction').Transaction;
var Client = require('../src/client').Client;
var WebSocketMock = require('../src/mock/ws').WebSocketMock;
var assert = require('chai').assert;
describe('Client', function() {
it('should connect the client', function(done){
server.listen(6000, function(){
var webSocket = new WebSocketMock();
var client = new Client({
webSocket: webSocket
});
client.on('connected',()=>{
done();
});
client.connect();
});
describe('Client', function(){
it('should send and receive an object', function(done){
it('should connect', function(done){
var obj = {
foo: 'bar'
};
var webSocket = new WebSocketMock();
var client = new Client({
webSocket: webSocket
});
client.on('connected',()=>{
client.sendObject(obj);
});
client.on('object', (receivedObj)=>{
assert.deepEqual(obj, receivedObj);
done();
});
client.connect();
});
run();
it('should create a transaction', function(done){
var webSocket = new WebSocketMock();
var client = new Client({
webSocket: webSocket
});
var transaction = client.transact({
request: 'foo'
});
assert.instanceOf(transaction, Transaction);
done();
});
it('should create a request', function(done){
var webSocket = new WebSocketMock();
var client = new Client({
webSocket: webSocket
});
client.on('connected',()=>{
client.request({
request: 'foo'
}).then((res)=>{
assert(res.getRequest(), res.getResponse());
done();
}).catch((err)=>{
done(err);
});
});
client.connect();
});
});

Loading…
Cancel
Save