Node.js 使用快速会话手动生成测试会话
我已经为我的express应用程序实现了OAuth2.0流作为单一身份验证方法 在实际情况中,一旦用户使用OAuth连接,就会在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
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
的内容,那么手动数据就消失了。我相信它已被快速会话
删除
如何在请求中手动注入会话数据以进行测试?这里的情况与此相同。。你解决这个问题了吗?嘿,结帐。这两个答案对这个案例都很有用。。你解决这个问题了吗?嘿,结帐。这两个答案对这个案例都非常有用。