Tighten validation of page/pages constructor options

This commit is contained in:
Lovell Fuller 2019-10-03 16:41:32 +01:00
parent 075771d1e9
commit 5a9b6c8afd
2 changed files with 14 additions and 0 deletions

View File

@ -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

View File

@ -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 () {