diff --git a/app.js b/app.js index 368cb8e..f386734 100644 --- a/app.js +++ b/app.js @@ -31,6 +31,21 @@ const app = express(); */ app.set('port', process.env.PORT || 3000); app.use(compression()); +app.use(bodyParser.json()); +app.use(expressValidator()); +app.all('/*', function(req, res, next) { + // CORS headers + res.header('Access-Control-Allow-Origin', '*'); // restrict it to the required domain + res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); + // Set custom headers for CORS + res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key'); + if (req.method == 'OPTIONS') { + res.status(200).end(); + } else { + next(); + } +}); + if (process.env.NODE_ENV !== 'test') { app.use(require('express-bunyan-logger')({ name: process.env.LOGGER_NAME, @@ -43,6 +58,10 @@ if (process.env.NODE_ENV !== 'test') { meta['debug-data'] = { req: _.pick(meta['req'], ['headers', 'params', 'query', 'body', 'user']) }; + + // Delete access token from debug-data + _.unset(meta, 'debug-data.req.headers.x-access-token'); + return 'fatal'; } else if (meta['response-time'] > 500) { meta['debug-data'] = { @@ -54,11 +73,11 @@ if (process.env.NODE_ENV !== 'test') { } }, excludes: [ - 'remote-address', + 'remote-address', 'pid', 'req_id', - 'ip', 'referer', - 'user-agent', - 'short-body', + 'ip', 'referer', + 'user-agent', + 'short-body', 'body', 'response-hrtime', 'http-version', 'req-headers', @@ -68,20 +87,6 @@ if (process.env.NODE_ENV !== 'test') { ] })); } -app.use(bodyParser.json()); -app.use(expressValidator()); -app.all('/*', function(req, res, next) { - // CORS headers - res.header('Access-Control-Allow-Origin', '*'); // restrict it to the required domain - res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); - // Set custom headers for CORS - res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key'); - if (req.method == 'OPTIONS') { - res.status(200).end(); - } else { - next(); - } -}); // Auth Middleware - This will check if the token is valid // Only the requests that start with /api/v1/* will be checked for the token. diff --git a/socket-server.js b/socket-server.js index d5ecc0f..0d407e5 100644 --- a/socket-server.js +++ b/socket-server.js @@ -3,7 +3,14 @@ */ require('./libs/load-env'); -var io = require('socket.io')(process.env.SOCKET_IO_PORT); +var app = require('http').createServer(handler); + +function handler (req, res) { + res.writeHead(200); + res.end(); +} + +var io = require('socket.io')(app); var redis = require('socket.io-redis'); io.adapter(redis(process.env.REDIS_URI.replace('redis://', ''), {key: process.env.SOCKET_IO_REDIS_PREFIX || 'socket.io'})); @@ -12,8 +19,6 @@ process.env.LOGGER_NAME = process.env.SOCKET_IO_LOGGER_NAME; var logger = require('./libs/logger'); var validateSocketIOToken = require('./middlewares/validateSocketIOToken'); -logger.info(`SocketIO server listening on port ${process.env.SOCKET_IO_PORT} in ${process.env.NODE_ENV} mode`); - io.on('connection', validateSocketIOToken) .on('authenticated', socket => { logger.debug('User connected with ID: ' + socket.user.id); @@ -24,3 +29,6 @@ io.on('connection', validateSocketIOToken) // Join current socket to private channel socket.join(`user.${socket.user.id}`); }); + +app.listen(process.env.SOCKET_IO_PORT); +logger.info(`SocketIO server listening on port ${process.env.SOCKET_IO_PORT} in ${process.env.NODE_ENV} mode`); diff --git a/test/features/admin-manage-shop.js b/test/features/admin-manage-shop.js index 2677dc9..2432bac 100644 --- a/test/features/admin-manage-shop.js +++ b/test/features/admin-manage-shop.js @@ -61,7 +61,7 @@ describe('GET /api/v1/admin/shops/:id', () => { }); }); -describe('GET /api/v1/admin/shops/', () => { +describe('GET /api/v1/admin/shops/', function() { let adminToken, normalUserAccessToken, createdShop, owner; before(done => { @@ -79,8 +79,8 @@ describe('GET /api/v1/admin/shops/', () => { }); describe('with admin access token', function() { - this.retries(5); - it('should return 200 OK and return an array which contain created shop info', (done) => { + it('should return 200 OK and return an array which contain created shop info', function(done) { + this.retries(5); request(app) .get('/api/v1/admin/shops/') .set('X-Access-Token', adminToken)