UNPKG

sails-hook-sockets

Version:
230 lines (156 loc) 5.99 kB
/** * Module dependencies */ var util = require('util'); var assert = require('assert'); var _ = require('@sailshq/lodash'); var async = require('async'); var Sails = require('sails').Sails; var SocketIORedisAdapter = require('socket.io-redis'); var lifecycle = require('./helpers/lifecycle.helper'); (require('os').platform() === 'win32' ? describe.skip : describe)('with redis -- errors', function (){ before(lifecycle.setup); after(lifecycle.teardown); it('Should fail to lift Sails when attempting to connect with a db value that is not a number', function(done) { Sails().lift({ log: { level: 'silent' }, globals: false, hooks: { // Inject the sockets hook in this repo into this Sails app sockets: require('../') }, loadHooks: ['moduleloader', 'userconfig', 'http', 'sockets'], // Configure the socket.io-redis adapter sockets: { adapter: 'socket.io-redis', adapterModule: SocketIORedisAdapter, // Configure port to match .travis.yml port: 6380, // Should fail, because db needs to be a non-negative integer db: 'foobar', // Configure password to match .travis.yml pass: 'secret', } }, function(err) { if (err) { assert.equal(err.code, 'SAILS:HOOK:SOCKETS:CONFIG', 'Got wrong kind of error: ' + util.inspect(err, {depth: null})); return done(); } return done(new Error('Should have failed to lift!')); }); }); it('Should fail to lift Sails when attempting to connect with a db value that is not a non-negative integer', function(done) { Sails().lift({ log: { level: 'silent' }, globals: false, hooks: { // Inject the sockets hook in this repo into this Sails app sockets: require('../') }, loadHooks: ['moduleloader', 'userconfig', 'http', 'sockets'], // Configure the socket.io-redis adapter sockets: { adapter: 'socket.io-redis', adapterModule: SocketIORedisAdapter, // Configure port to match .travis.yml port: 6380, // Should fail, because db needs to be a non-negative integer db: -5, // Configure password to match .travis.yml pass: 'secret', } }, function(err) { if (err) { assert.equal(err.code, 'SAILS:HOOK:SOCKETS:CONFIG', 'Got wrong kind of error: ' + util.inspect(err, {depth: null})); return done(); } return done(new Error('Should have failed to lift!')); }); }); // // Skipping this test for now since apparently Redis allows you to use crazy DB indexes upon connection! // // i.e. even if you only have it set up for 16 dbs, you can do redis://localhost:6379/99999, and it will // // just silently connect you to db 0 instead. // // See: https://github.com/antirez/redis/issues/3410 // // FUTURE: Check # of available DBs after connection and if its < then the value configured for db, bail // // or log a warning. // xit('Should fail to lift Sails when attempting to connect with a db value that is > than the # of databases on the Redis server', function(done) { // Sails().lift({ // log: { level: 'silent' }, // globals: false, // hooks: { // // Inject the sockets hook in this repo into this Sails app // sockets: require('../') // }, // loadHooks: ['moduleloader', 'userconfig', 'http', 'sockets'], // // Configure the socket.io-redis adapter // sockets: { // adapter: 'socket.io-redis', // adapterModule: SocketIORedisAdapter, // // Configure port to match .travis.yml // port: 6380, // // Should fail, because by default Redis only has 16 dbs // db: 99, // // Configure password to match .travis.yml // pass: 'secret', // } // }, function(err) { // if (err) { // assert.equal(err.code, 'E_INVALID_DB_INDEX', 'Got wrong kind of error: ' + util.inspect(err, {depth: null})); // return done(); // } // return done(new Error('Should have failed to lift!')); // }); // }); it('Should fail to lift when incorrect password is supplied', function(done) { Sails().lift({ log: { level: 'silent' }, globals: false, hooks: { // Inject the sockets hook in this repo into this Sails app sockets: require('../') }, loadHooks: ['moduleloader', 'userconfig', 'http', 'sockets'], // Configure the socket.io-redis adapter sockets: { adapter: 'socket.io-redis', adapterModule: SocketIORedisAdapter, // Configure port to match .travis.yml port: 6380, db: 2, // Configure password to match .travis.yml pass: 'badpass', } }, function(err) { if (err) { assert.equal(err.code, 'ERR_BAD_PASSWORD', 'Got wrong kind of error: ' + util.inspect(err, {depth: null})); return done(); } return done(new Error('Should have failed to lift!')); }); }); it('Should fail to lift when no password is supplied', function(done) { Sails().lift({ log: { level: 'silent' }, globals: false, hooks: { // Inject the sockets hook in this repo into this Sails app sockets: require('../') }, loadHooks: ['moduleloader', 'userconfig', 'http', 'sockets'], // Configure the socket.io-redis adapter sockets: { adapter: 'socket.io-redis', adapterModule: SocketIORedisAdapter, // Configure port to match .travis.yml port: 6380, db: 2, } }, function(err) { if (err) { assert.equal(err.code, 'ERR_NO_PASSWORD', 'Got wrong kind of error: ' + util.inspect(err, {depth: null})); return done(); } return done(new Error('Should have failed to lift!')); }); }); });