egi*_*gig 2 session mocha.js node.js express supertest
我有一个快速应用程序,其身份验证由 JWT 处理,我只需在登录后将令牌存储在会话中。
req.session.JWToken = '<token>';
Run Code Online (Sandbox Code Playgroud)
身份验证中间件如下所示:
this.use('(^\/admin')', expressJWT({
secret: 'secret',
getToken: function fromHeaderOrQuerystring (req) {
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.token) {
return req.query.token;
} else if (req.session.JWToken) {
return req.session.JWToken;
}
return null;
}
}).unless({path: ['/login', '/signup']}));
Run Code Online (Sandbox Code Playgroud)
我需要使用 mocha 和 supertest 来测试它,我尝试了下面的代码:
var app = require('./../app');
var request = require('supertest');
describe('app', function() {
var agent = request.agent(app);
it('should signin', function(done) {
agent
.post('/login')
.send({_email: '<email>', _password: '<password>'})
.expect(200, done)
.end(function(err, res){
if(err) throw err;
done();
});
});
// how to persist session here ?
it('should get a restricted page', function(done) {
agent
.get('/admin')
.expect(200)
.end(function(err, res){
if(err) throw err;
done();
});
});
});
Run Code Online (Sandbox Code Playgroud)
不知道如何坚持第二次会议it。请指导我一个方向。
我昨天遇到了同样的问题并解决了。agent尝试在块之外设置describe:
var app = require('./../app');
var request = require('supertest');
var agent = request.agent(app);
describe('app', function() {
it('should signin', function(done) {
agent
.post('/login')
.send({_email: '<email>', _password: '<password>'})
.expect(200, done)
.end(function(err, res){
if(err) throw err;
done();
});
});
// how to persist session here ?
it('should get a restricted page', function(done) {
agent
.get('/admin')
.expect(200)
.end(function(err, res){
if(err) throw err;
done();
});
});
});
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试使用 sinon 在 beforeEach 循环中执行登录 POST。
beforeEach((done) => {
agent
.post('/login')
.send({_email: '<email>', _password: '<password>'})
.end((err, res) => {
if (err) throw err;
done();
});
});
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请尝试确保您的email和password参数正确。
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |