【发布时间】:2015-01-16 05:04:25
【问题描述】:
我需要在 mocha 请求之间保持会话活跃。
登录后,我将用户ID存储在快速会话对象中:
req.session.user = user.id ;
在浏览器上,会话保持不变,不需要任何问题(使用 Postman 测试)。
但是,我需要使外部应用程序可以访问我的 REST API,并且我不希望对我的 API 上的每个请求进行身份验证。
有没有办法让我能够在 mocha 中或通过 API 的客户端应用程序保持两个请求之间的会话?
提前致谢。
英语不是我的母语,我可能没有我想要的那么清楚。因此,我可以提供您可能需要的任何信息来帮助我。
更新
感谢 Alberto,我找到了如何通过 Supertest 在 Mocha 中保持我的会话活力。 代理会保留他的会话,直到它被销毁或请求注销。 需要做的是使用相同的代理登录和请求 API。
我所做的是:
var request = require('supertest'),
should = require('chai').should();
describe('ImageController', function() {
var agent = request.agent('http://localhost:1337') ;
before(function(done){
agent
.post('/auth/local')
.send({identifier: 'email', password: 'password'})
.end(function(err, res) {
if (err) return done(err);
done();
});
})
after(function(done){
agent
.get('/logout')
.end(function(err, res) {
if (err) return done(err);
done();
});
})
describe('POST /image', function(){
it('should return 201 for image creation after login', function (done) {
agent
.post('/image')
.send({name: 'test.png'})
.end(function (err, res) {
if (err) return done(err);
res.status.should.be.equal(201);
done();
});
});
});
});
【问题讨论】:
-
欢迎来到 StackOverflow!请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”。
-
感谢您的欢迎!你能解释一下我在标题中放置标签的位置吗?
标签: session express sails.js mocha.js passport.js