mirror of
https://github.com/socketio/socket.io.git
synced 2026-04-30 03:00:39 -04:00
Added zuul config and made testing work on browsers
This commit is contained in:
@@ -2,6 +2,11 @@ language: node_js
|
||||
node_js:
|
||||
- 0.6
|
||||
- 0.8
|
||||
- 0.10
|
||||
|
||||
notifications:
|
||||
irc: "irc.freenode.org#socket.io"
|
||||
irc: "irc.freenode.org##socket.io"
|
||||
env:
|
||||
global:
|
||||
- secure: v76/Y3hGIGsANoFAW0US3X8cuDFY7g8stMFrwGUxiQnm4HN3j83w+FfoZay0mESKhNIpqk4nCJQwMCd1gJnLL7ybjGOt5LeEuQVlLDXkRVrXSViy2XwAW+mLj7H/++/LTHWo/Ma6pOa1YC2o4SbSsiK1NdhdAK5ZGluonPBIG18=
|
||||
- secure: P2zFTMeI9duoPBXhAZZLddqeJS+dUI27Q02tTdr+AjvUkr8f7Zga57SZxP6Jbn8bxUPI3ZQzAm1KMsyUo4IAegXLJ4j9VCF6ab65NkE1k8UH99kXXS30Ha27NS1aQafCbaOTxxQfqQHmnjt2HJtvk04nqCEDhoZCdDUZNVSGCOc=
|
||||
|
||||
16
.zuul.yml
Normal file
16
.zuul.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
ui: mocha-bdd
|
||||
browsers:
|
||||
- name: chrome
|
||||
version: 29..latest
|
||||
- name: firefox
|
||||
version: latest
|
||||
- name: safari
|
||||
version: latest
|
||||
- name: ie
|
||||
version: 10
|
||||
platform: Windows 2012
|
||||
- name: ie
|
||||
version: 9
|
||||
version: [6..9, latest]
|
||||
- name: iphone
|
||||
version: oldest..latest
|
||||
4
Makefile
4
Makefile
@@ -4,6 +4,8 @@ REPORTER = dot
|
||||
test:
|
||||
@./node_modules/.bin/mocha \
|
||||
--reporter $(REPORTER) \
|
||||
--bail
|
||||
--bail \
|
||||
test/index.js
|
||||
@./node_modules/.bin/zuul -- test/index.js
|
||||
|
||||
.PHONY: test
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"mocha": "1.16.2",
|
||||
"expect.js": "0.2.0"
|
||||
"expect.js": "0.2.0",
|
||||
"zuul": "1.5.4"
|
||||
},
|
||||
"component": {
|
||||
"scripts": [
|
||||
|
||||
37
test/arraybuffer.js
Normal file
37
test/arraybuffer.js
Normal file
@@ -0,0 +1,37 @@
|
||||
var parser = require('../index.js');
|
||||
var expect = require('expect.js');
|
||||
var helpers = require('./helpers.js');
|
||||
var encode = parser.encode;
|
||||
var decode = parser.decode;
|
||||
|
||||
describe('parser', function() {
|
||||
it('encodes an ArrayBuffer', function() {
|
||||
var packet = {
|
||||
type: parser.BINARY_EVENT,
|
||||
data: new ArrayBuffer(2),
|
||||
id: 0,
|
||||
nsp: '/'
|
||||
};
|
||||
parser.encode(packet, function(encodedData) {
|
||||
var decodedPacket = parser.decode(encodedData);
|
||||
helpers.testPacketMetadata(packet, decodedPacket);
|
||||
helpers.testArrayBuffers(packet.data, decodedPacket.data);
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an ArrayBuffer deep in JSON', function() {
|
||||
var packet = {
|
||||
type: parser.BINARY_EVENT,
|
||||
data: {a: 'hi', b: {why: new ArrayBuffer(3)}, c:'bye'},
|
||||
id: 999,
|
||||
nsp: '/deep'
|
||||
};
|
||||
parser.encode(packet, function(encodedData) {
|
||||
var decodedPacket = parser.decode(encodedData);
|
||||
helpers.testPacketMetadata(packet, decodedPacket);
|
||||
expect(packet.data.a).to.eql(decodedPacket.data.a);
|
||||
expect(packet.data.c).to.eql(decodedPacket.data.c);
|
||||
helpers.testArrayBuffers(packet.data.b.why, decodedPacket.data.b.why);
|
||||
});
|
||||
});
|
||||
});
|
||||
16
test/buffer.js
Normal file
16
test/buffer.js
Normal file
@@ -0,0 +1,16 @@
|
||||
var parser = require('../index.js');
|
||||
var expect = require('expect.js');
|
||||
var helpers = require('./helpers.js');
|
||||
var encode = parser.encode;
|
||||
var decode = parser.decode;
|
||||
|
||||
describe('parser', function() {
|
||||
it('encodes a Buffer', function() {
|
||||
helpers.test({
|
||||
type: parser.BINARY_EVENT,
|
||||
data: new Buffer('abc', 'utf8'),
|
||||
id: 23,
|
||||
nsp: '/cool'
|
||||
});
|
||||
});
|
||||
});
|
||||
25
test/helpers.js
Normal file
25
test/helpers.js
Normal file
@@ -0,0 +1,25 @@
|
||||
var parser = require('../index.js');
|
||||
var expect = require('expect.js');
|
||||
var encode = parser.encode;
|
||||
var decode = parser.decode;
|
||||
|
||||
// tests encoding and decoding a packet
|
||||
module.exports.test = function(obj){
|
||||
encode(obj, function(encodedPacket) {
|
||||
expect(decode(encodedPacket)).to.eql(obj);
|
||||
});
|
||||
}
|
||||
|
||||
// array buffer's slice is native code that is not transported across
|
||||
// socket.io via msgpack, so regular .eql fails
|
||||
module.exports.testArrayBuffers = function(buf1, buf2) {
|
||||
buf1.slice = undefined;
|
||||
buf2.slice = undefined;
|
||||
expect(buf1).to.eql(buf2);
|
||||
}
|
||||
|
||||
module.exports.testPacketMetadata = function(p1, p2) {
|
||||
expect(p1.type).to.eql(p2.type);
|
||||
expect(p1.id).to.eql(p2.id);
|
||||
expect(p1.nsp).to.eql(p2.nsp);
|
||||
}
|
||||
11
test/index.js
Normal file
11
test/index.js
Normal file
@@ -0,0 +1,11 @@
|
||||
var env = require('./support/env.js');
|
||||
|
||||
require('./parser.js');
|
||||
|
||||
if (!env.browser) {
|
||||
require('./buffer.js');
|
||||
}
|
||||
|
||||
if (global.ArrayBuffer) {
|
||||
require('./arraybuffer.js');
|
||||
}
|
||||
53
test/parser.js
Normal file
53
test/parser.js
Normal file
@@ -0,0 +1,53 @@
|
||||
var parser = require('../index.js');
|
||||
var expect = require('expect.js');
|
||||
var helpers = require('./helpers.js');
|
||||
var encode = parser.encode;
|
||||
var decode = parser.decode;
|
||||
|
||||
describe('parser', function(){
|
||||
|
||||
it('exposes types', function(){
|
||||
expect(parser.CONNECT).to.be.a('number');
|
||||
expect(parser.DISCONNECT).to.be.a('number');
|
||||
expect(parser.EVENT).to.be.a('number');
|
||||
expect(parser.ACK).to.be.a('number');
|
||||
expect(parser.ERROR).to.be.a('number');
|
||||
});
|
||||
|
||||
it('encodes connection', function(){
|
||||
helpers.test({
|
||||
type: parser.CONNECT,
|
||||
nsp: '/woot'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes disconnection', function(){
|
||||
helpers.test({
|
||||
type: parser.DISCONNECT,
|
||||
nsp: '/woot'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an event', function(){
|
||||
helpers.test({
|
||||
type: parser.EVENT,
|
||||
data: ['a', 1, {}],
|
||||
nsp: '/'
|
||||
});
|
||||
helpers.test({
|
||||
type: parser.EVENT,
|
||||
data: ['a', 1, {}],
|
||||
id: 1,
|
||||
nsp: '/test'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an ack', function(){
|
||||
helpers.test({
|
||||
type: parser.ACK,
|
||||
data: ['a', 1, {}],
|
||||
id: 123,
|
||||
nsp: '/'
|
||||
});
|
||||
});
|
||||
});
|
||||
5
test/support/env.js
Normal file
5
test/support/env.js
Normal file
@@ -0,0 +1,5 @@
|
||||
// WARNING this is bad practice
|
||||
// we only do this in our tests because we need to test engine.io-client
|
||||
// support in browsers and in node.js
|
||||
// some tests do not yet work in both
|
||||
module.exports.browser = !!global.window;
|
||||
115
test/test.js
115
test/test.js
@@ -1,115 +0,0 @@
|
||||
|
||||
var parser = require('..');
|
||||
var expect = require('expect.js');
|
||||
var encode = parser.encode;
|
||||
var decode = parser.decode;
|
||||
|
||||
// tests encoding and decoding a packet
|
||||
|
||||
function test(obj){
|
||||
encode(obj, function(encodedPacket) {
|
||||
expect(decode(encodedPacket)).to.eql(obj);
|
||||
});
|
||||
}
|
||||
|
||||
// array buffer's slice is native code that is not transported across
|
||||
// socket.io via msgpack, so regular .eql fails
|
||||
function testArrayBuffers(buf1, buf2) {
|
||||
buf1.slice = undefined;
|
||||
buf2.slice = undefined;
|
||||
expect(buf1).to.eql(buf2);
|
||||
}
|
||||
|
||||
function testPacketMetadata(p1, p2) {
|
||||
expect(p1.type).to.eql(p2.type);
|
||||
expect(p1.id).to.eql(p2.id);
|
||||
expect(p1.nsp).to.eql(p2.nsp);
|
||||
}
|
||||
|
||||
describe('parser', function(){
|
||||
|
||||
it('exposes types', function(){
|
||||
expect(parser.CONNECT).to.be.a('number');
|
||||
expect(parser.DISCONNECT).to.be.a('number');
|
||||
expect(parser.EVENT).to.be.a('number');
|
||||
expect(parser.ACK).to.be.a('number');
|
||||
expect(parser.ERROR).to.be.a('number');
|
||||
});
|
||||
|
||||
it('encodes connection', function(){
|
||||
test({
|
||||
type: parser.CONNECT,
|
||||
nsp: '/woot'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes disconnection', function(){
|
||||
test({
|
||||
type: parser.DISCONNECT,
|
||||
nsp: '/woot'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an event', function(){
|
||||
test({
|
||||
type: parser.EVENT,
|
||||
data: ['a', 1, {}],
|
||||
nsp: '/'
|
||||
});
|
||||
test({
|
||||
type: parser.EVENT,
|
||||
data: ['a', 1, {}],
|
||||
id: 1,
|
||||
nsp: '/test'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an ack', function(){
|
||||
test({
|
||||
type: parser.ACK,
|
||||
data: ['a', 1, {}],
|
||||
id: 123,
|
||||
nsp: '/'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes a Buffer', function() {
|
||||
test({
|
||||
type: parser.BINARY_EVENT,
|
||||
data: new Buffer('abc', 'utf8'),
|
||||
id: 23,
|
||||
nsp: '/cool'
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an ArrayBuffer', function() {
|
||||
var packet = {
|
||||
type: parser.BINARY_EVENT,
|
||||
data: new ArrayBuffer(2),
|
||||
id: 0,
|
||||
nsp: '/'
|
||||
};
|
||||
parser.encode(packet, function(encodedData) {
|
||||
var decodedPacket = parser.decode(encodedData);
|
||||
testPacketMetadata(packet, decodedPacket);
|
||||
testArrayBuffers(packet.data, decodedPacket.data);
|
||||
});
|
||||
});
|
||||
|
||||
it('encodes an ArrayBuffer deep in JSON', function() {
|
||||
var packet = {
|
||||
type: parser.BINARY_EVENT,
|
||||
data: {a: 'hi', b: {why: new ArrayBuffer(3)}, c:'bye'},
|
||||
id: 999,
|
||||
nsp: '/deep'
|
||||
};
|
||||
parser.encode(packet, function(encodedData) {
|
||||
var decodedPacket = parser.decode(encodedData);
|
||||
testPacketMetadata(packet, decodedPacket);
|
||||
expect(packet.data.a).to.eql(decodedPacket.data.a);
|
||||
expect(packet.data.c).to.eql(decodedPacket.data.c);
|
||||
testArrayBuffers(packet.data.b.why, decodedPacket.data.b.why);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user