add basic integration tests

This commit is contained in:
Jose F. Romaniello
2012-11-16 12:43:12 -03:00
parent d8c7c0ed7d
commit 3dc3096b15
8 changed files with 190 additions and 4 deletions

71
test/fixture/index.js Normal file
View File

@ -0,0 +1,71 @@
var express = require('express'),
connect = require('connect'),
passport = require('passport'),
http = require('http');
var socketIo = require('socket.io'),
passportSocketIo = require('../../lib');
var sessionStore = new connect.session.MemoryStore(),
cookieSecret = 'asdasdsdas1312312',
sessionKey = 'test-session-key';
var server;
require('./setupPassport');
exports.start = function (callback) {
var app = express();
app.configure(function(){
app.use(express.cookieParser(cookieSecret));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session({
store: sessionStore,
key: sessionKey
}));
app.use(passport.initialize());
app.use(passport.session());
});
app.post('/login', passport.authenticate('local', { successRedirect: '/',
failureRedirect: '/login',
failureFlash: true }));
app.get('/', function(req, res){
if(!req.user){
res.send(401);
}else{
res.json(req.user);
}
});
server = http.createServer(app);
var sio = socketIo.listen(server);
sio.configure(function(){
this.set('authorization', passportSocketIo.authorize({
sessionKey: sessionKey,
sessionStore: sessionStore,
sessionSecret: cookieSecret
}));
this.set('log level', 0);
});
sio.sockets.on('echo', function (m) {
sio.sockets.emit('echo-response', m);
});
server.listen(9000, callback);
};
exports.stop = function (callback) {
server.close();
callback();
};

View File

@ -0,0 +1,20 @@
var xmlhttprequest = require('xmlhttprequest');
var originalRequest = xmlhttprequest.XMLHttpRequest;
module.exports = function (jar) {
xmlhttprequest.XMLHttpRequest = function(){
originalRequest.apply(this, arguments);
this.setDisableHeaderCheck(true);
var stdOpen = this.open;
this.open = function() {
stdOpen.apply(this, arguments);
var header = jar.get({ url: 'http://localhost:9000' })
.map(function (c) {
return c.name + "=" + c.value;
}).join("; ");
this.setRequestHeader('cookie', header);
};
};
};

View File

@ -0,0 +1,23 @@
var passport = require('passport'),
LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
if(username === 'jose' && password === 'Pa123'){
return done(null, {
name: 'jose',
mail: 'j@f.r'
});
} else {
return done(null, false, {message: 'wrong user name or password'});
}
}
));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});