我使用Passport.js进行身份验证(本地策略),并使用Mocha和Supertest进行测试。
如何使用Supertest创建会话并发出经过验证的请求?
发布于 2012-12-22 18:04:14
为此,您应该使用superagent。它是较低层的模块,由supertest使用。请看一下Persisting an agent部分
var request = require('superagent');
var user1 = request.agent();
user1
.post('http://localhost:4000/signin')
.send({ user: 'hunter@hunterloftis.com', password: 'password' })
.end(function(err, res) {
// user1 will manage its own cookies
// res.redirects contains an Array of redirects
});现在,您可以使用user1发出经过身份验证的请求。
发布于 2013-08-27 21:11:05
正如zeMirco指出的,底层superagent模块支持会话,自动为您维护cookie。但是,可以通过未记录的功能使用supertest中的superagent.agent()功能。
只需使用require('supertest').agent('url')而不是require('supertest')('url')
var request = require('supertest');
var server = request.agent('http://localhost:3000');
describe('GET /api/getDir', function(){
it('login', loginUser());
it('uri that requires user to be logged in', function(done){
server
.get('/api/getDir')
.expect(200)
.end(function(err, res){
if (err) return done(err);
console.log(res.body);
done()
});
});
});
function loginUser() {
return function(done) {
server
.post('/login')
.send({ username: 'admin', password: 'admin' })
.expect(302)
.expect('Location', '/')
.end(onResponse);
function onResponse(err, res) {
if (err) return done(err);
return done();
}
};
};发布于 2013-06-14 23:39:22
尝尝这个,
var request=require('supertest');
var cookie;
request(app)
.post('/login')
.send({ email: "user@gluck.com", password:'password' })
.end(function(err,res){
res.should.have.status(200);
cookie = res.headers['set-cookie'];
done();
});
//
// and use the cookie on the next request
request(app)
.get('/v1/your/path')
.set('cookie', cookie)
.end(function(err,res){
res.should.have.status(200);
done();
});https://stackoverflow.com/questions/14001183
复制相似问题