Заглушка паспорта заверена с помощью Синона и Мокко - PullRequest
0 голосов
/ 11 июня 2018

Я обычно нахожу все, что хочу на платформе, но в настоящее время я работаю всухую.

Вот моя проблема: я пытаюсь заглушить паспортную аутентификацию (точнее 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-решения, которое было опубликовано, но ничего не работает.Заглушка не вызывается, никогда

Кому-нибудь удалось решить эту проблему?

Большое спасибо за ваше время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...