diff --git a/lib/schema.js b/lib/schema.js index 376de4950..dfc262d4c 100755 --- a/lib/schema.js +++ b/lib/schema.js @@ -129,7 +129,8 @@ internals.routeBase = Joi.object({ modify: Joi.boolean(), options: Joi.object() }) - .without('modify', 'sample'), + .without('modify', 'sample') + .assert('options.stripUnknown', Joi.ref('modify'), 'meet requirement of having peer modify set to true'), security: Joi.object({ hsts: [ Joi.object({ diff --git a/test/validation.js b/test/validation.js index 94bd9acdf..80067bebe 100755 --- a/test/validation.js +++ b/test/validation.js @@ -1585,6 +1585,34 @@ describe('validation', () => { done(); }); }); + + it('throws on options.stripUnknown without modify', (done) => { + + const server = new Hapi.Server(); + server.connection(); + + expect(() => { + + server.route({ + method: 'GET', + path: '/', + handler: function (request, reply) { + + return reply('ok'); + }, + config: { + response: { + schema: Joi.string(), + options: { + stripUnknown: true + } + } + } + }); + }).to.throw(/"options.stripUnknown" failed to meet requirement of having peer modify set to true/); + + done(); + }); });