我正在为一个受jwt保护的REST API编写集成测试。POST /user/token的一个API操作是返回一个给定username和password的jwt,然后此内标识用于一系列操作,例如:
GET /user/:id其中路由使用jwt({secret: secret.secretToken}),因此令牌包含在HTTP头Authorization中。
当使用supertest进行测试时,我可以进行嵌套测试,但我希望首先获得令牌,然后使用该令牌来测试其他操作。
POST /user/token => 12345
GET /user/:id, `Authorization Bearer 12345`
GET /user/:foo, `Authorization Bearer 12345`如何避免为每个操作测试生成一个新的令牌(见下文),而只使用POST /user/token生成的单个令牌。
it('should get a valid token for user: user1', function(done) {
request(url)
.post('/user/token')
.send({ _id: user1._id, password: user1.password })
.expect(200) // created
.end(function(err, res) {
// test operation GET /user/:id发布于 2014-10-20 12:10:03
您想对/user/token执行单次POST,然后使用在每个测试用例中收到的令牌吗?如果是这样,那么使用您正在使用的测试框架的before钩子(Mocha?)并将令牌存储到变量中,例如
describe('My API tests', function() {
var token = null;
before(function(done) {
request(url)
.post('/user/token')
.send({ _id: user1._id, password: user1.password })
.end(function(err, res) {
token = res.body.token; // Or something
done();
});
});
it('should get a valid token for user: user1', function(done) {
request('/get/user')
.set('Authorization', 'Bearer ' + token)
.expect(200, done);
});
});发布于 2017-02-25 11:16:31
需要将授权令牌设置为‘持有者’+
var token = null;
before(function(done) {
request(url)
.post('/user/token')
.send({ _id: user1._id, password: user1.password })
.end(function(err, res) {
token = res.body.token; // Or something
done();
});
});
it('should get a valid token for user: user1', function(done) {
request('/get/user')
.set('Authorization', 'Bearer ' + token)
.expect(200, done);
});https://stackoverflow.com/questions/26453990
复制相似问题