i have test rest api. routes require value in http requests headers user authentication token.
i have separated interesting bussiness logic in pure javascript code can't find way test routes require token in headers of http request.
any other alternatives mocha and/or supertest welcome.
with supertest, can set header parameter set keyword :
api.get('/aroute/') ... .set('headerparametername', value) ... here example of testing express server api token authorization using supertest :
app.js:
var express = require('express'); var app = express(); var jwt = require('jsonwebtoken'); var expressjwt = require('express-jwt'); var secret = 'my-secret'; app.get('/get-token', function(req, res) { var token = jwt.sign({foo: 'bar'}, secret); res.send({token: token}); }); app.post( '/test', expressjwt({ secret: secret }), function(req, res) { res.send({message: 'you use route!'}); } ); app.use(function(err, req, res, next) { res.status(err.status || 500).send({error: err.message}); }); app.listen(4040, function() { console.log('server , running @ 4040 port'); }); module.exports = app; test.js:
var request = require('supertest'); var app = require('./app.js'); describe('test route token', function() { var token = ''; before(function(done) { request(app) .get('/get-token') .end(function(err, res) { var result = json.parse(res.text); token = result.token; done(); }); }); it('should not able consume route /test since no token sent', function(done) { request(app) .post('/test') .expect(401, done); }); it('should able consume route /test since token valid sent', function(done) { request(app) .post('/test') .set('authorization', 'bearer ' + token) .expect(200, done); }); });
Comments
Post a Comment