Files
node-jsonwebtoken/test/claim-private.tests.js
Jake LaceyandGitHub 59d32eeef4 fix(sign&verify)!: Remove default none support from sign and verify methods, and require it to be explicitly configured (#851)
* fix(sign&verify)!: Remove default none support from sign and verify methods, and require it to be explicitly configured

BREAKING CHANGE: Removes fallback for none algorithm for the verify method.
2022-11-29 14:32:41 +00:00

74 lines
2.0 KiB
JavaScript

'use strict';
const expect = require('chai').expect;
const util = require('util');
const testUtils = require('./test-utils');
function signWithPayload(payload, callback) {
testUtils.signJWTHelper(payload, 'secret', {algorithm: 'HS256'}, callback);
}
describe('with a private claim', function() {
[
true,
false,
null,
-1,
0,
1,
-1.1,
1.1,
'',
'private claim',
'UTF8 - José',
[],
['foo'],
{},
{foo: 'bar'},
].forEach((privateClaim) => {
it(`should sign and verify with claim of ${util.inspect(privateClaim)}`, function (done) {
signWithPayload({privateClaim}, (e1, token) => {
testUtils.verifyJWTHelper(token, 'secret', {}, (e2, decoded) => {
testUtils.asyncCheck(done, () => {
expect(e1).to.be.null;
expect(e2).to.be.null;
expect(decoded).to.have.property('privateClaim').to.deep.equal(privateClaim);
});
})
});
});
});
// these values JSON.stringify to null
[
-Infinity,
Infinity,
NaN,
].forEach((privateClaim) => {
it(`should sign and verify with claim of ${util.inspect(privateClaim)}`, function (done) {
signWithPayload({privateClaim}, (e1, token) => {
testUtils.verifyJWTHelper(token, 'secret', {}, (e2, decoded) => {
testUtils.asyncCheck(done, () => {
expect(e1).to.be.null;
expect(e2).to.be.null;
expect(decoded).to.have.property('privateClaim', null);
});
})
});
});
});
// private claims with value undefined are not added to the payload
it(`should sign and verify with claim of undefined`, function (done) {
signWithPayload({privateClaim: undefined}, (e1, token) => {
testUtils.verifyJWTHelper(token, 'secret', {}, (e2, decoded) => {
testUtils.asyncCheck(done, () => {
expect(e1).to.be.null;
expect(e2).to.be.null;
expect(decoded).to.not.have.property('privateClaim');
});
})
});
});
});