我正在用express做cookie会话管理,如下所示:
req.session.authentication = auth;然后我用下面这样的方法验证经过身份验证的urls
if(!req.session.authentication){res.send(401);}现在我正在使用mocha、superagent和should为URL构建测试,但是我似乎找不到一种使用superagent获取/设置cookie的方法。我甚至试图在验证测试之前请求登录,但它不起作用,
我已经尝试将请求添加到mocha BDD套件的before语句中的登录,但是它仍然告诉我该请求是未经授权的,我已经测试了执行来自浏览器的请求的身份验证,但是它在套件中不起作用,你知道为什么吗?
发布于 2020-05-02 10:13:41
2020 +
一种简洁的方法是:
注意,我保留了相同的URL,因为我使用了graphql,但您可以将其设为参数:
const graph = agent =>
agent.post('/graph')
.set('cookie', cookieStore.get());
const handleCookie = res =>
cookieStore.set(res.headers['set-cookie'][0]);
let currentCookie="";
const cookieStore = {
set: cookie=>{currentCookie=cookie},
get: cookie=>currentCookie,
};
module.exports = {graph,connectTestUser,handleCookieResponse};您现在可以只使用cookie图(代理)来发送请求,并在您有可能更新您的cookie(设置或清除)的响应时发送handleCookie(response),例如:
graph(agent).end((err,res) => {
if (err) return done(err);
res.statusCode.should.equal(200);
handleCookie(res);
return done();
});https://stackoverflow.com/questions/11919737
复制相似问题