From d7c5793d98c300603440ab460c11665f661ad3a0 Mon Sep 17 00:00:00 2001 From: jden Date: Wed, 15 Jul 2015 21:03:00 -0700 Subject: [PATCH] add tests for verify expires --- package.json | 3 ++- test/verify.tests.js | 40 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0744217..93a68a6 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "devDependencies": { "atob": "^1.1.2", "chai": "^1.10.0", - "mocha": "^2.1.0" + "mocha": "^2.1.0", + "sinon": "^1.15.4" }, "engines": { "npm": ">=1.4.28" diff --git a/test/verify.tests.js b/test/verify.tests.js index b55a925..cbf5054 100644 --- a/test/verify.tests.js +++ b/test/verify.tests.js @@ -2,6 +2,7 @@ var jwt = require('../index'); var jws = require('jws'); var fs = require('fs'); var path = require('path'); +var sinon = require('sinon'); var assert = require('chai').assert; @@ -9,7 +10,7 @@ describe('verify', function() { var pub = fs.readFileSync(path.join(__dirname, 'pub.pem')); var priv = fs.readFileSync(path.join(__dirname, 'priv.pem')); - it('should first assume JSON claim set', function () { + it('should first assume JSON claim set', function (done) { var header = { alg: 'RS256' }; var payload = { iat: Math.floor(Date.now() / 1000 ) }; @@ -23,6 +24,43 @@ describe('verify', function() { jwt.verify(signed, pub, {typ: 'JWT'}, function(err, p) { assert.isNull(err); assert.deepEqual(p, payload); + done(); }); }); + + describe('expiration', function () { + var clock; + beforeEach(function () { + // clock = sinon.useFakeTimers(1437018650768); + }); + afterEach(function () { + try { clock.restore(); } catch (e) {} + }); + + it('should error on expired token', function (done) { + clock = sinon.useFakeTimers(1437018650768); + var token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0MzcwMTg1ODIsImV4cCI6MTQzNzAxODU4M30.NmMv7sXjM1dW0eALNXud8LoXknZ0mH14GtnFclwJv0s'; + var key = 'key'; + jwt.verify(token, key, {algorithms: ['HS256']}, function (err, p) { + assert.equal(err.name, 'TokenExpiredError'); + assert.equal(err.message, 'jwt expired'); + assert.equal(err.expiredAt.constructor.name, 'Date'); + assert.equal(Number(err.expiredAt), 1437018583000); + assert.isUndefined(p); + done(); + }); + }); + + it('should not error on unexpired token', function (done) { + clock = sinon.useFakeTimers(1437018582000); + var token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0MzcwMTg1ODIsImV4cCI6MTQzNzAxODU4M30.NmMv7sXjM1dW0eALNXud8LoXknZ0mH14GtnFclwJv0s'; + var key = 'key'; + jwt.verify(token, key, {algorithms: ['HS256']}, function (err, p) { + assert.isNull(err); + assert.equal(p.foo, 'bar'); + done(); + }); + }); + }); + });