测试oauth认证路线

时间:2014-09-03 02:00:01

标签: node.js oauth passport.js supertest

我使用的是koa-passport& koa使用twitter oauth处理我的登录和注册。它工作得很好,但是我很难理解如何使用supertest和mocha来测试我的身份验证路由。

我见过的大多数示例都涉及使用supertest将用户名和密码发送到登录端点以首先创建用户会话。我的问题是我没有用户名/护照身份验证策略。我需要模拟一个oauth登录过程,它将设置适当的会话变量,从而测试某些路由。

关于如何实现这一目标的任何线索?

1 个答案:

答案 0 :(得分:0)

我现在解决这个问题的方法是在需要时暂时在中间件堆栈中插入模拟认证用户。这是我的快递基本代码。

var Layer = require('express/lib/router/layer');
var app = require('../../../server');

exports.login = login;
exports.logout = logout;

function login(user){

  var fn = function insertUser(req, res, next){
    req.user = user;
    next();
  }

  var layer = new Layer('/', {
    sesitive: false,
    strict: false,
    end: false
  }, fn);
  layer.route = undefined;

  app._router.stack.unshift(layer);
}

function logout(){
  app._router.stack.shift();
}

然后在你的测试中,你打电话:

it('should allow the user to edit something', function(done){
  login(this.user);
  // perform supertest task
  logout();
});

这显然非常简陋......但似乎是出于测试目的而做的工作。