diff --git a/lib/input.js b/lib/input.js index 80168876..943c01d5 100644 --- a/lib/input.js +++ b/lib/input.js @@ -65,11 +65,15 @@ function _createInputDescriptor (input, inputOptions, containerOptions) { if (is.defined(inputOptions.pages)) { if (is.integer(inputOptions.pages) && is.inRange(inputOptions.pages, -1, 100000)) { inputDescriptor.pages = inputOptions.pages; + } else { + throw is.invalidParameterError('pages', 'integer between -1 and 100000', inputOptions.pages); } } if (is.defined(inputOptions.page)) { if (is.integer(inputOptions.page) && is.inRange(inputOptions.page, 0, 100000)) { inputDescriptor.page = inputOptions.page; + } else { + throw is.invalidParameterError('page', 'integer between 0 and 100000', inputOptions.page); } } // Create new image diff --git a/test/unit/io.js b/test/unit/io.js index 053b4dcd..0fd04e9e 100644 --- a/test/unit/io.js +++ b/test/unit/io.js @@ -648,6 +648,16 @@ describe('Input/output', function () { it('Ignore unknown attribute', function () { sharp(null, { unknown: true }); }); + it('Invalid page property throws', function () { + assert.throws(function () { + sharp(null, { page: -1 }); + }, /Expected integer between 0 and 100000 for page but received -1 of type number/); + }); + it('Invalid pages property throws', function () { + assert.throws(function () { + sharp(null, { pages: '1' }); + }, /Expected integer between -1 and 100000 for pages but received 1 of type string/); + }); }); describe('create new image', function () {