模拟MochaJS测试的req.user对象

时间:2017-04-22 00:59:14

标签: node.js express mocha passport.js chai

在我的一条ExpressJS路线中,我正在使用PassportJS的HTTP承载策略和本地策略。这意味着用户必须登录并且必须拥有承载令牌才能到达该路由。

function isLoggedIn(req, res, next) {

    // if user is authenticated in the session, carry on 
    if (req.isAuthenticated())
        return next();

    // if they aren't redirect them to the home page
    res.redirect('/login');
}
app.route('/api/someaction')
        .get(passport.authenticate('bearer', { session: false }), isLoggedIn, function(req, res, next) {
      console.log(req.user.userID);
});

当我使用浏览器或邮递员浏览此路线时(在为本地策略设置cookie之后),它按预期工作。

现在我需要用MochaJS / ChaiJS为这条路线编写集成测试。这是我的测试文件:

var server = require('../app.js');
var chai = require('chai');
var chaiHttp = require('chai-http');
var should = chai.should();
var expect = chai.expect;

chai.use(chaiHttp);

  describe('...', () => {
      it('...', (done) => {
        chai.request(server)
            .get('/api/someaction')
            .set('Authorization', 'Bearer 123')
            .end((err, res) => {
              // asserts here
              done();
            });
      });
});

在使用MochaJS测试此文件时,req.user.userID中的/api/someaction始终未定义。

如何模拟PassportJS策略以在路由中获取req.user对象?

0 个答案:

没有答案