/** * 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.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));