我正在使用koa-passport & koa通过twitter oauth来处理我的登录和注册。它工作得很好,但是我很难理解我应该如何使用supertest和mocha来测试我的认证路由。
我见过的大多数示例都涉及使用supertest向登录端点发送用户名和密码,以便首先创建用户会话。我的问题是我没有用户名/护照身份验证策略。我需要模拟一个oauth登录过程,该过程将设置适当的会话变量,并因此测试某些路由。
有什么关于我如何实现这一点的线索吗?
发布于 2015-01-10 02:33:39
这些天来,我对这个问题的解决方案基本上是在需要时在中间件堆栈中临时插入一个模拟身份验证的用户。这是我的express的基本代码。
var Layer = require('express/lib/router/layer');
var app = require('../../../server');
exports.login = login;
exports.logout = logout;
function login(user){
var fn = function insertUser(req, res, next){
req.user = user;
next();
}
var layer = new Layer('/', {
sesitive: false,
strict: false,
end: false
}, fn);
layer.route = undefined;
app._router.stack.unshift(layer);
}
function logout(){
app._router.stack.shift();
}然后在你的测试中,你调用:
it('should allow the user to edit something', function(done){
login(this.user);
// perform supertest task
logout();
});这显然是相当初级的..。但似乎是为了测试而做这项工作。
https://stackoverflow.com/questions/25635080
复制相似问题