Из всех документов и примеров, которые я прочитал, должно быть возможно сохранить сеанс в супертесте с использованием агента:
var app = require('../../../server'),
should = require('should'),
request = require('supertest'),
mongoose = require('mongoose'),
User = mongoose.model('User'),
_ = require('lodash');
var user = {
name: 'Sterling Archer',
email: '[email protected]',
password: 'guest'
};
describe('user.me', function() {
var url = '/user';
var agent = request.agent(app);
var new_user = new User(user);
new_user.save();
it('should return a user object', function(done) {
agent
.post('/signin')
.send(_.omit(user, 'name'))
.expect(200).end(function(err, res) {
console.log(res.headers['set-cookie']);
});
agent
.get(url)
.expect(200)
.end(function(err, res) {
should.not.exist(err);
console.log(res.headers['set-cookie']);
res.body.should.have.property('user');
res.body.user.should.have.properties('name', 'email');
done();
});
});
});
Сеанс должен сохраниться, поскольку каждый запрос выше использует один и тот же агент. Однако, похоже, это не так - выходные данные журналов set-cookie следующие:
[ 'connect.sid=s%3AsFl1DQ4oOxC8MNAm79mnnr9q.gMkp8iEWtG8XlZZ2rkmheBwxKAyLyhixqDUOkYftwzA; Path=/; HttpOnly' ]
[ 'connect.sid=s%3AEzfbPyRGMff7yBXc9OAX3vGT.Ze2YoxZzuB6F6OwOk7mvrk96yPP2G4MGV%2Bt1rVjTyS8; Path=/; HttpOnly' ]
Passport.js используется для аутентификации и сеансов. Я ожидал бы, что вышеупомянутый connect.sid будет постоянным для обоих запросов, но похоже, что при каждом вызове создается новый сеанс, поэтому агент не входит в систему при втором вызове, и объект пользователя не возвращается.
Когда я тестирую свое приложение вручную в браузере, connect.sid остается постоянным после входа в систему, и функциональность, которую я тестирую, работает.
Я, должно быть, делаю что-то не так с агентом, и я надеюсь, что кто-то это заметит. В противном случае мы будем очень признательны за предложения о том, как я могу отладить проблему.
.set('Cookie',<sid>)
метод при втором вызове агента, он работает? - person Gntem   schedule 04.04.2014