Files
socket.io/test/socket.js

100 lines
2.6 KiB
JavaScript

var expect = require('expect.js');
var io = require('../');
describe('socket', function(){
this.timeout(70000);
it('should have an accessible socket id equal to the engine.io socket id', function(done) {
var socket = io({ forceNew: true });
socket.on('connect', function(){
expect(socket.id).to.be.ok();
expect(socket.id).to.eql(socket.io.engine.id);
socket.disconnect();
done();
});
});
it('clears socket.id upon disconnection', function(done){
var socket = io({ forceNew: true });
socket.on('connect', function(){
socket.on('disconnect', function(){
expect(socket.id).to.not.be.ok();
done();
});
socket.disconnect();
});
});
it('doesn\'t fire a connect_error if we force disconnect in opening state', function(done){
var socket = io({ forceNew: true, timeout: 100 });
socket.disconnect();
socket.on('connect_error', function(){
throw new Error('Unexpected');
});
setTimeout(function(){
done();
}, 300);
});
it('should ping and pong with latency', function(done){
var socket = io({ forceNew: true });
socket.on('connect', function(){
var pinged;
socket.once('ping', function(){
pinged = true;
});
socket.once('pong', function(ms){
expect(pinged).to.be(true);
expect(ms).to.be.a('number');
expect(ms).to.be.greaterThan(0);
socket.disconnect();
done();
});
});
});
it('should change socket.id upon reconnection', function(done){
var socket = io({ forceNew: true });
socket.on('connect', function(){
var id = socket.id;
socket.on('reconnect_attempt', function(){
expect(socket.id).to.not.be.ok();
});
socket.on('reconnect', function() {
expect(socket.id).to.not.eql(id);
socket.disconnect();
done();
});
socket.io.engine.close();
});
});
it('should enable compression by default', function(done){
var socket = io({ forceNew: true });
socket.on('connect', function(){
socket.io.engine.once('packetCreate', function(packet){
expect(packet.options.compress).to.be(true);
socket.disconnect();
done();
});
socket.emit('hi');
});
});
it('should disable compression', function(done){
var socket = io({ forceNew: true });
socket.on('connect', function(){
socket.io.engine.once('packetCreate', function(packet){
expect(packet.options.compress).to.be(false);
socket.disconnect();
done();
});
socket.compress(false).emit('hi');
});
});
});