2
我有护照受保护的API调用中间件:测试受保护的API调用,摩卡,supertest,节点JS,护照
server.get('/api/pipes', auth, api.pipes);
如果用户没有授权的身份验证方法返回一个401。
我要看看这个测试,如果用户的loggedIn:
var postValidLoginCredentials = function(){
return request(url).post('/api/login')
.set('Content-Type', 'multipart/form-data')
.field('email', '[email protected]')
.field('password', 'example')
};
//This pass passes
it('should return 200 OK when a user enters a valid user and pass', function(done){
postValidLoginCredentials()
.end(function(err, res){
res.should.have.status('200');
done();
});
});
这是我的测试我的保护API调用:
it('should return 200 OK on GET /api/pipes when user is loggedin', function (done) {
postValidLoginCredentials()
.end(function(err, res){
request(url)
.get('/api/pipes')
.set('Accept', 'application/json')
.expect(200, done);
})
});
我第一次发布我的登录。在登录回调中,我打电话给受保护的api调用。它应该是200,但我得到了401.该功能在我的客户端运行,所以在我的测试中出现问题。
我也试过但我的postValidLoginCredentials在一个函数中,但它没有工作。
有什么想法?
您有没有机会查看我的建议? – Esteban
Thx为您的answear。在发布之前,我找到了解决方案。我在登录中使用了设置的cookie。然后我在受保护的路径调用中使用“获取”cookie。我使用较低级别的superagent来做到这一点。所以我不确定你的解决方案是否有效。 – Per
我不确定我是否理解你的评论,但你不应该自己设置cookie,因为护照会为你做。或者你是否只修改了你的测试,并且我弄错了? – Esteban