linagora-rse
Version:
69 lines (60 loc) • 1.72 kB
JavaScript
;
var request = require('supertest'),
expect = require('chai').expect;
describe('The sessions middleware', function() {
var user = {
username: 'Foo Bar Baz',
password: 'secret',
accounts: [{
type: 'email',
hosted: true,
emails: ['foo@bar.com']
}],
login: {
failures: [new Date(), new Date(), new Date()]
}
};
beforeEach(function(done) {
var self = this;
this.testEnv.initCore(function() {
self.mongoose = require('mongoose');
self.app = self.helpers.requireBackend('webserver/application');
var User = self.helpers.requireBackend('core/db/mongo/models/user');
var u = new User(user);
u.save(function(err) {
if (err) {
return done(err);
}
done();
});
});
});
afterEach(function(done) {
this.helpers.mongo.dropDatabase(done);
});
it('should be a MongoDB Session Storage on "connected" event', function(done) {
var self = this;
function checkSession(err) {
if (err) {
return done(err);
}
self.mongoose.connection.collection('sessions').find().toArray(function(err, results) {
expect(results[0]._id).to.exist;
var session = results[0].session;
expect(session).to.exist;
expect(JSON.parse(session).passport.user).to.equal(user.accounts[0].emails[0]);
done();
});
}
request(this.app)
.get('/')
.expect(200);
setTimeout(function() {
request(self.app)
.post('/api/login')
.send({username: user.accounts[0].emails[0], password: user.password, rememberme: false})
.expect(200)
.end(checkSession);
}, 50);
});
});