UNPKG

restifyve-jwt

Version:

JWT authentication middlewarefor restify > 5.x.

64 lines (51 loc) 1.83 kB
var jwt = require('jsonwebtoken'); var assert = require('assert'); var restifyjwt = require('../lib'); describe('revoked jwts', function() { var secret = 'shhhhhh'; var revoked_id = '1234'; var middleware = restifyjwt({ secret: secret, isRevoked: function(req, payload, done) { done(null, payload.jti && payload.jti === revoked_id); } }); it('should throw if token is revoked', function() { var req = {}; var res = {}; var token = jwt.sign({ jti: revoked_id, foo: 'bar' }, secret); req.headers = {}; req.headers.authorization = 'Bearer ' + token; middleware(req, res, function(err) { assert.ok(err); assert.equal(err.body.code, 'Unauthorized'); assert.equal(err.message, 'The token has been revoked.'); }); }); it('should work if token is not revoked', function() { var req = {}; var res = {}; var token = jwt.sign({ jti: '1233', foo: 'bar' }, secret); req.headers = {}; req.headers.authorization = 'Bearer ' + token; middleware(req, res, function() { assert.equal('bar', req.user.foo); }); }); it('should throw if error occurs checking if token is revoked', function() { var req = {}; var res = {}; var token = jwt.sign({ jti: revoked_id, foo: 'bar' }, secret); req.headers = {}; req.headers.authorization = 'Bearer ' + token; restifyjwt({ secret: secret, isRevoked: function(req, payload, done) { done(new Error('An error ocurred')); } })(req, res, function(err) { assert.ok(err); assert.equal(err.message, 'An error ocurred'); }); }); });