diff options
Diffstat (limited to 'test/js/third_party/jsonwebtoken/option-maxAge.test.js')
-rw-r--r-- | test/js/third_party/jsonwebtoken/option-maxAge.test.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/js/third_party/jsonwebtoken/option-maxAge.test.js b/test/js/third_party/jsonwebtoken/option-maxAge.test.js new file mode 100644 index 000000000..e48525344 --- /dev/null +++ b/test/js/third_party/jsonwebtoken/option-maxAge.test.js @@ -0,0 +1,62 @@ +"use strict"; + +import jwt from "jsonwebtoken"; +import { expect, describe, it, beforeEach, afterEach } from "bun:test"; +import util from "util"; +import sinon from "sinon"; + +describe("maxAge option", function () { + let token; + + let fakeClock; + beforeEach(function () { + fakeClock = sinon.useFakeTimers({ now: 60000 }); + token = jwt.sign({ iat: 70 }, "secret", { algorithm: "HS256" }); + }); + + afterEach(function () { + fakeClock.uninstall(); + }); + + [ + { + description: "should work with a positive string value", + maxAge: "3s", + }, + { + description: "should work with a negative string value", + maxAge: "-3s", + }, + { + description: "should work with a positive numeric value", + maxAge: 3, + }, + { + description: "should work with a negative numeric value", + maxAge: -3, + }, + ].forEach(testCase => { + it(testCase.description, function (done) { + expect(() => jwt.verify(token, "secret", { maxAge: "3s", algorithm: "HS256" })).not.toThrow(); + jwt.verify(token, "secret", { maxAge: testCase.maxAge, algorithm: "HS256" }, err => { + expect(err).toBeNull(); + done(); + }); + }); + }); + + [true, "invalid", [], ["foo"], {}, { foo: "bar" }].forEach(maxAge => { + it(`should error with value ${util.inspect(maxAge)}`, function (done) { + expect(() => jwt.verify(token, "secret", { maxAge, algorithm: "HS256" })).toThrow( + '"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60', + ); + jwt.verify(token, "secret", { maxAge, algorithm: "HS256" }, err => { + expect(err).toBeInstanceOf(jwt.JsonWebTokenError); + expect(err.message).toEqual( + '"maxAge" should be a number of seconds or string representing a timespan eg: "1d", "20h", 60', + ); + done(); + }); + }); + }); +}); |