mirror of
https://github.com/socketio/socket.io.git
synced 2026-04-30 03:00:39 -04:00
144 lines
3.0 KiB
JavaScript
144 lines
3.0 KiB
JavaScript
|
|
/*!
|
|
* socket.io-node
|
|
* Copyright(c) 2011 LearnBoost <dev@learnboost.com>
|
|
* MIT Licensed
|
|
*/
|
|
|
|
/**
|
|
* Test dependencies.
|
|
*/
|
|
|
|
var sio = require('socket.io')
|
|
, should = require('./common')
|
|
, ports = 15700;
|
|
|
|
/**
|
|
* Test.
|
|
*/
|
|
|
|
module.exports = {
|
|
'namespace pass no authentication': function (done) {
|
|
var cl = client(++ports)
|
|
, io = create(cl)
|
|
, ws;
|
|
|
|
io.of('/a')
|
|
.on('connection', function (socket) {
|
|
cl.end();
|
|
ws.finishClose();
|
|
io.server.close()
|
|
done();
|
|
});
|
|
|
|
cl.handshake(function (sid) {
|
|
ws = websocket(cl, sid);
|
|
ws.on('open', function () {
|
|
ws.packet({
|
|
type: 'connect'
|
|
, endpoint: '/a'
|
|
});
|
|
})
|
|
});
|
|
},
|
|
|
|
'namespace pass authentication': function (done) {
|
|
var cl = client(++ports)
|
|
, io = create(cl)
|
|
, ws;
|
|
|
|
io.of('/a')
|
|
.authorization(function (data, fn) {
|
|
fn(null, true);
|
|
})
|
|
.on('connection', function (socket) {
|
|
cl.end();
|
|
ws.finishClose();
|
|
io.server.close()
|
|
done();
|
|
});
|
|
|
|
cl.handshake(function (sid) {
|
|
ws = websocket(cl, sid);
|
|
ws.on('open', function () {
|
|
ws.packet({
|
|
type: 'connect'
|
|
, endpoint: '/a'
|
|
});
|
|
})
|
|
});
|
|
},
|
|
|
|
'namespace authentication handshake data': function (done) {
|
|
var cl = client(++ports)
|
|
, io = create(cl)
|
|
, ws;
|
|
|
|
io.of('/a')
|
|
.authorization(function (data, fn) {
|
|
data.foo = 'bar';
|
|
fn(null, true);
|
|
})
|
|
.on('connection', function (socket) {
|
|
socket.handshake.address.address.should.equal('127.0.0.1');
|
|
socket.handshake.address.port.should.equal(ports);
|
|
socket.handshake.headers.host.should.equal('localhost');
|
|
socket.handshake.headers.connection.should.equal('keep-alive');
|
|
socket.handshake.time.should.match(/GMT/);
|
|
socket.handshake.foo.should.equal('bar');
|
|
|
|
cl.end();
|
|
ws.finishClose();
|
|
io.server.close()
|
|
done();
|
|
});
|
|
|
|
cl.handshake(function (sid) {
|
|
ws = websocket(cl, sid);
|
|
ws.on('open', function () {
|
|
ws.packet({
|
|
type: 'connect'
|
|
, endpoint: '/a'
|
|
});
|
|
})
|
|
});
|
|
},
|
|
|
|
'namespace fail authentication': function (done) {
|
|
var cl = client(++ports)
|
|
, io = create(cl)
|
|
, calls = 0
|
|
, ws;
|
|
|
|
io.of('/a')
|
|
.authorization(function (data, fn) {
|
|
fn(null, false);
|
|
})
|
|
.on('connection', function (socket) {
|
|
throw new Error('Should not be called');
|
|
});
|
|
|
|
cl.handshake(function (sid) {
|
|
ws = websocket(cl, sid);
|
|
ws.on('open', function () {
|
|
ws.packet({
|
|
type: 'connect'
|
|
, endpoint: '/a'
|
|
});
|
|
});
|
|
|
|
ws.on('message', function (data) {
|
|
if (data.endpoint == '/a') {
|
|
data.type.should.eql('error');
|
|
data.reason.should.eql('unauthorized')
|
|
|
|
cl.end();
|
|
ws.finishClose();
|
|
io.server.close()
|
|
done();
|
|
}
|
|
})
|
|
});
|
|
}
|
|
};
|