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

Node.js 使用快速会话手动生成测试会话,node.js,express,passport.js,express-session,Node.js,Express,Passport.js,Express Session,我已经为我的express应用程序实现了OAuth2.0流作为单一身份验证方法 在实际情况中,一旦用户使用OAuth连接,就会在req.session.passport中创建一个会话并可访问服务器端 在这个会话中,有一个OAuth访问令牌,它是在我的RESTAPI上执行经过身份验证的请求所必需的。为此,我编写了一个中间件,将令牌从req.session.passport复制到Authorization头 app.use(function(req, res, next) { if (req.s

我已经为我的express应用程序实现了OAuth2.0流作为单一身份验证方法

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

在这个会话中,有一个OAuth访问令牌,它是在我的RESTAPI上执行经过身份验证的请求所必需的。为此,我编写了一个中间件,将令牌从
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
的内容,那么手动数据就消失了。我相信它已被
快速会话
删除


如何在请求中手动注入会话数据以进行测试?

这里的情况与此相同。。你解决这个问题了吗?嘿,结帐。这两个答案对这个案例都很有用。。你解决这个问题了吗?嘿,结帐。这两个答案对这个案例都非常有用。