如何存根(绕过)Sailsjs auth策略以允许控制器测试?

时间:2017-07-05 21:05:11

标签: testing sails.js

我有一个Sailsjs控制器可以执行某些操作,但目前它处于需要身份验证的策略下(即isAuthenticated)。

在应用该策略之前,我的控制器的集成测试工作正常。现在它不起作用,因为它要求用户登录。

由于未说明的原因,我无法在每次测试之前提出登录请求,因此我必须找到一种方法来跳过该策略。我想把它存根,所以它总是让路线通过。你会如何在Sailsjs v0.12.11中做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以在isAuthenticated方法中添加API密钥并检查此密钥。如果密钥可用,请调用next()函数。

代码段:

module.exports = function (req, res, next) {
if (req.isAuthenticated() || req.headers['api-key'] == 'apiKeyValue') {
    return next();
} else {
    if (!req.headers['api-key'] && !req.isAuthenticated()) {
        return res.redirect('/auth/login');
    } else {
        res.status(403);
        return res.json({
            error: 'Invalid Api Key'
        });
    }
}

基本上,通过标头传递API密钥并修改isAuthenticated函数中的逻辑。因此,只要API密钥可用,它就会调用next()回调。