4

我正在使用 koa-passport 和 koa 使用 twitter oauth 处理我的登录和注册。它工作得很好,但我很难理解我应该如何使用 supertest 和 mocha 测试我的认证路线。

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

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

4

1 回答 1

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();
});

这显然是非常基本的......但似乎是为了测试目的而完成这项工作。

于 2015-01-09T18:33:38.960 回答