/** * Redis Mock - wrapper for redis.js, makes system use separate test db, instead of production * ATTENTION: testing db is flushed before every use! */ (function(module) { 'use strict'; var RedisDB, redis = require('redis'), utils = require('./../public/src/utils.js'), path = require('path'), nconf = require('nconf'), winston = require('winston'), errorText; nconf.file({ file: path.join(__dirname, '../config.json') }); var testDbConfig = nconf.get('redis_test'), productionDbConfig = nconf.get('redis'); if(!testDbConfig){ errorText = 'redis_test database is not defined'; winston.info( "\n===========================================================\n"+ "Please, add parameters for test database in config.json\n"+ "For example:\n"+ '"redis_test": {' + '\n' + ' "host": "127.0.0.1",' + '\n' + ' "port": "6379",' + '\n' + ' "password": "",' + '\n' + ' "database": "1"' + '\n' + '}\n'+ "===========================================================" ); winston.error(errorText); throw new Error(errorText); } if( testDbConfig.database === productionDbConfig.database && testDbConfig.host === productionDbConfig.host && testDbConfig.port === productionDbConfig.port ){ errorText = 'redis_test database has the same config as production db'; winston.error(errorText); throw new Error(errorText); } nconf.set('redis',testDbConfig); RedisDB = require('../src/redis.js'); //Clean up RedisDB.send_command('flushdb', [], function(error){ if(error){ winston.error(error); throw new Error(error); } else { winston.info('redis_test db flushed'); } }); //TODO: data seeding, if needed at all module.exports = RedisDB; }(module));