使用快速会话手动生成测试会话

时间:2016-07-26 08:56:33

标签: node.js express passport.js express-session

我已经将OAUth 2.0流程实现为我的快速应用程序的单一身份验证方法。

在实际情况中,一旦用户使用OAuth进行连接,就会在req.session.passport中创建会话并在服务器端访问。

在此会话中,存在在我的REST API上执行经过身份验证的请求所需的OAuth访问令牌。为了能够这样做,我写了一个中间件,将令牌从req.session.passport复制到Authorization标题。

app.use(function(req, res, next) {
  if (req.session.passport) {
    req.headers['Authorization'] = req.session.passport.user.accessToken;
  }
  next();
});

现在,我想测试这个中间件而不经历整个oauth流程。理想情况下,我想手动创建会话并在req.session.passport内注入测试数据,然后调用我的API的任何受保护端点,以检查它是否可以正确执行经过身份验证的请求。

我尝试在以下测试中在req.session内手动设置数据

it('Should be able to make an authenticated request with session data',
function(done) {
  var req = request(app).get('/api/SomeProtectedEndpoint');

  req.session = {
    passport: {
      user: {
        accessToken : 'eade123d3ffwhatever'
      }
    }
  }

  req.expect(200, function(err, res){
      if (err) return done(err);
      done();
    });
});

但如果我在中间件中显示req.session的内容,手动数据就会消失。我相信它已被express-session删除。

如何在出于测试目的的请求中手动注入会话数据?

0 个答案:

没有答案