Я обычно нахожу все, что хочу на платформе, но в настоящее время я работаю всухую.
Вот моя проблема: я пытаюсь заглушить паспортную аутентификацию (точнее isAuthenticated), чтобы обойти мой OAuth, когдатестирование.Этот метод используется в качестве промежуточного программного обеспечения в одном из моих маршрутов.Вот некоторые фрагменты
Модуль AuthUtils
module.exports.ensureAuthenticated = (req, res, next) => {
if (req.isAuthenticated()) {
console.log('Auth Success', req.session.passport.user);
return next();
}
console.log('Auth Fail');
return res.redirect('/');
};
Пример маршрута:
router.get('/', authUtils.ensureAuthenticated, async (req, res, next) => {
//do stuff
});
Модульный тест:
const app = require('../../app.js');
const authUtils = require('../../scripts/auth_utils.js');
const service = require('../../services/scenes.js');
const data = require('../fixtures/data.json');
describe.only('Scenes Unit tests', function() {
beforeEach(function() {
this.sandbox = sinon.createSandbox();
})
afterEach(function() {
this.sandbox.restore();
})
it('should get all the scenes', function(done){
this.sandbox.stub(authUtils, 'ensureAuthenticated').returns(true);
this.sandbox.stub(service, 'getScenes').resolves(data.list.success);
chai.request(app)
.get('/api/')
.then((res) => {
authUtils.ensureAuthenticated.should.have.been.calledOnce;
done();
})
.catch((err) => {
done(err);
});
});
})
Я пытался использовать заглушки,удаление кеша модуля, прокси-сервера и в основном всего SO-решения, которое было опубликовано, но ничего не работает.Заглушка не вызывается, никогда
Кому-нибудь удалось решить эту проблему?
Большое спасибо за ваше время!