Есть контроллер в котором осуществляется пользователя из системы.
// controllers/auth/signOut
const redisModel = require('../../models/redis');
module.exports = async (req, res) => {
const user = req.user;
// check in redis id
const checkInRedis = await redisModel.get(`id.${ user.id }`);
// if exist, delete id
if ( checkInRedis ) {
redisModel.del(`id.${ user.id }`)
}
res.status(200).json({ result: 'ok' })
};
// models/redis
const redis = require('redis');
const set = require('./set');
const get = require('./get');
const del = require('./del');
const REDIS_PORT = process.env.REDIS_PORT || 6379;
const clientRedis = process.env.REDIS_TEST ? redis.createClient(REDIS_PORT);
module.exports = {
set: set(clientRedis),
get: get(clientRedis),
del: del(clientRedis)
};
// models/redis/get
module.exports = clientRedis => key => {
return new Promise((resolve, reject) => {
clientRedis.get(key, (err, reply) => {
if (err) reject(err);
resolve(reply);
})
});
};
Аналогично для del
Нашел пакет для мока redis.
https://www.npmjs.com/package/redis-mock
Как правильно его применить в данном случае
require('dotenv').config();
const express = require('express');
const request = require('supertest');
const bodyParser = require('body-parser');
const redis = require('redis-mock');
const auth = require('../../../../server/controllers/auth');
const { i18next, i18nextMiddleware } = require('../../../i18n-server');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(i18nextMiddleware);
app.post(
'/',
(req, res, next) => {
if (req.body.id && req.body.type) {
req.user = {
id: req.body.id,
type: req.body.type
};
}
next();
},
auth.signOut
);
describe('signOut', () => {
it('success', done => {
i18next.on('initialized', () => {
request(app)
.post('/')
.set('Accept-Language', 'en')
.type('application/x-www-form-urlencoded')
.send({
id: 1,
type: 'manager'
})
.end((err, res) => {
if (err) return done(err);
done();
});
});
})
});
Ввести переменную типа process.env.REDIS_TEST и менять пакет при создании редис клиента ?