Skip to content

Instantly share code, notes, and snippets.

@timestep
Created October 7, 2013 20:19
Show Gist options
  • Save timestep/6874257 to your computer and use it in GitHub Desktop.
Save timestep/6874257 to your computer and use it in GitHub Desktop.
Sails socket testing also courtesy of xdissent @ #sailsjs
// 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