如何测试passport.js验证

时间:2017-11-16 11:51:07

标签: javascript node.js unit-testing sails.js passport.js

我想测试我的passport.js身份验证中间件:

passport.authenticate('jwt', { session: false }, (err, user, info) => {
  if (err) return res.serverError(err)
  if (!user) return res.forbidden(info)
  req.user = user
  next()
})(req, res, next)

中间件正在运行。但我不知道如何在测试中等待回调。测试看起来像这样:

const token = JwtAuthService.issue({ id: 1, email: 'test@email.com' })
const req = httpMocks.createRequest({ headers: { authorization: `bearer ${token}` } })
const res = { forbidden: sinon.spy() }
const next = sinon.spy()

isAuthenticated(req, res, next);

(res.forbidden.called).should.be.false();
(next.calledOnce).should.be.true();

由于passport.authenticate(...)不是承诺,我不能简单地等待响应。如果调用了passport.authenticate(...)res.forbidden,我怎样才能等待next函数的回调。

0 个答案:

没有答案