Created
October 7, 2013 20:19
-
-
Save timestep/6874257 to your computer and use it in GitHub Desktop.
Sails socket testing also courtesy of xdissent @ #sailsjs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// In Sails app install test dependencies: | |
// $ npm install mocha supertest sails-memory --save-dev | |
// Create some tests in `test` folder in the app. | |
// Run `mocha` | |
var request = require('supertest'), | |
assert = require('assert'), | |
sails = require('sails'), | |
io = require('sails/node_modules/socket.io/node_modules/socket.io-client'); | |
function connect (res) { | |
var cookie = res.headers['set-cookie'] ? encodeURIComponent(res.headers['set-cookie'][0]) : ''; | |
return io.connect('http://' + res.req._headers.host + '?cookie=' + cookie); | |
} | |
describe('app', function () { | |
before(function (done) { | |
sails.lift({ | |
port: 0, | |
host: 'localhost', | |
adapters: {'default': 'memory'} | |
}, function (err) { | |
if (err) return done(err); | |
sails.models.foo.createEach([ | |
{name: 'one'}, | |
{name: 'two'}, | |
{name: 'three'} | |
], done); | |
}); | |
}); | |
after(function (done) { | |
sails.lower(done); | |
}); | |
describe('home', function () { | |
it('should show the home page', function (done) { | |
request(sails.express.server) | |
.get('/') | |
.expect(200, /Sails/, done); | |
}); | |
}); | |
describe('foo controller', function () { | |
it('should return all foo models', function (done) { | |
request(sails.express.server) | |
.get('/foo') | |
.expect('Content-Type', /json/) | |
.expect(200, function (err, res) { | |
if (err) return done(err); | |
assert.equal(res.body.length, 3); | |
done(); | |
}); | |
}); | |
}); | |
describe('sockets', function () { | |
it('should connect a socket if a session exists', function (done) { | |
request(sails.express.server) | |
.get('/') | |
.expect(200) | |
.end(function (err, res) { | |
if (err) return done(err); | |
var socket = connect(res); | |
socket.on('error', done); | |
socket.on('connect', function () { | |
socket.disconnect() | |
done(); | |
}); | |
}); | |
}); | |
}); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment