diff --git a/lib/schemas.js b/lib/schemas.js index 17b9747e..29e64589 100755 --- a/lib/schemas.js +++ b/lib/schemas.js @@ -210,7 +210,7 @@ internals.desc.values = Joi.array() null, Joi.boolean(), Joi.function(), - Joi.number().allow(Infinity, -Infinity), + Joi.number().allow(Infinity, -Infinity, NaN), Joi.string().allow(''), Joi.symbol(), internals.desc.buffer, diff --git a/test/manifest.js b/test/manifest.js index 9e4edbb6..80b89acf 100755 --- a/test/manifest.js +++ b/test/manifest.js @@ -254,6 +254,15 @@ describe('Manifest', () => { expect(Joi.invalid(1).allow(1).describe()).to.equal({ type: 'any', allow: [1] }); }); + it('handles NaN in allow list', () => { + + const schema = Joi.number().allow(NaN); + const desc = schema.describe(); + expect(desc.type).to.equal('number'); + expect(desc.allow).to.have.length(1); + expect(Number.isNaN(desc.allow[0])).to.equal(true); + }); + it('describes ruleset changes', () => { const schema = Joi.string().min(1).keep();