我在superagent和express.js的测试中遇到了一些问题。
it('should 200 with valid login', (done) => {
console.log(createdUser[`${validUser.email}`]['token']);
// JWT eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ODAwZDllZmNiM2VkMzBhOGZmMDUyOGUiLCJmaXJzdE5hbWUiOiJoYW5zIiwibGFzdE5hbWUiOiJvdHRvIiwiZW1haWwiOiJvdHRvQGV4YW1wbGUuZGUiLCJyb2xlIjoiVXNlciIsImlhdCI6MTQ3NjQ1MDc5OSwiZXhwIjoxNDc2NDYwODc5fQ.OlO_dVMCV6bm7XSyzKLFTgb-efOeyU1TniHEcIY7AHU
request(app)
.get('/api/protected')
.set('Authorization', createdUser[`${validUser.email}`]['token'])
.expect(200)
.end((err, res)=> {
if (err) done(err);
console.log(res.header);
// assert(true, 'asdfasdf');
// done();
});
});
当我访问Postman上的路径时,它正在工作,我可以使用适合的jwt访问受保护的路径。
代码中有什么变化? 我想测试不同的路径。
感谢
答案 0 :(得分:0)
缺少一些信息,但这里有一些可能的答案:
您确实展示了如何创建应用。如果您使用的是像express-jwt这样的中间件,则需要在运行测试之前对其进行配置。 (app.use(expressJWt ...)
通常,使用承载架构通过授权标头发送jwt。 (即授权:Bearer eyJhbGciOiJI ......)
答案 1 :(得分:0)
设置令牌时缺少承载关键字
.set('Authorization', `Bearer ${createdUser[`${validUser.email}`]['token']}`)
答案 2 :(得分:0)
您可以使用带有 { type: ‘bearer’ }
选项的超级代理的 auth
函数:
request.auth(jwt, { type: 'bearer' })