如何在expressjs应用程序上作为auth0用户进行mocha测试?

时间:2015-04-23 15:25:31

标签: express mocha passport.js auth0

抱歉新手问题,我还是摩卡新手。我有一个现有的应用程序,我的任务是创建一个摩卡测试用例。此应用使用passport-auth0passport进行用户登录。如何编写mocha测试,以便我可以作为虚拟用户登录来测试受限制的函数?

1 个答案:

答案 0 :(得分:3)

由于Passport使用可以交换的策略,因此一种选择是在运行测试时使用mock来代替实际的auth0策略。这看起来像是:

function MockStrategy() {
}

MockStrategy.prototype.authenticate = function(req) {
    self.success({ id: 1, username: 'joe' );
}

// In test setup, mock out the strategy with one that returns
// dummy data.
passport.use('auth0', new MockStrategy());

现在,您可以编写测试用例,其中req.user始终为模拟策略提供的joe。您可以通过类似的方式扩展它以涵盖身份验证失败。

这是我首选的方法,因为它是最不具侵入性的。根据应用程序代码的结构,可能还需要其他依赖项,需要进行模拟。对于这些情况,我发现proxyquire很有用。