Skip to content

Commit e372b1f

Browse files
committed
Merge pull request #49 from briandela/master
Return error during plugin registration for invalid options.
2 parents 30fd458 + 37e4e08 commit e372b1f

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

lib/index.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ internals.defaults = {
4040

4141
exports.register = function (server, options, next) {
4242

43-
Joi.assert(options, internals.schema, 'Invalid crumb options');
43+
var validateOptions = internals.schema.validate(options);
44+
if (validateOptions.error) {
45+
return next(validateOptions.error);
46+
}
47+
4448
var settings = Hoek.applyToDefaults(internals.defaults, options);
4549

4650
var routeDefaults = {

test/index.js

+25-5
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,25 @@ describe('Crumb', function () {
258258
});
259259
});
260260

261+
it('should fail to register with bad options', function (done) {
262+
263+
var server = new Hapi.Server();
264+
server.connection();
265+
266+
server.register({
267+
register: Crumb,
268+
options: {
269+
foo: 'bar'
270+
}
271+
}, function(err) {
272+
273+
expect(err).to.exist();
274+
expect(err.name).to.equal('ValidationError');
275+
expect(err.message).to.equal('foo is not allowed');
276+
done();
277+
});
278+
});
279+
261280
it('route uses crumb when route.config.plugins.crumb set to true and autoGenerate set to false', function (done) {
262281

263282
var server = new Hapi.Server();
@@ -375,11 +394,12 @@ describe('Crumb', function () {
375394
var server = new Hapi.Server();
376395
server.connection();
377396

378-
expect(function () {
379-
380-
server.register({ register: Crumb, options: { allowOrigins: ['*'] } }, function (err) {});
381-
}).to.throw(/Invalid crumb options/);
382-
done();
397+
server.register({ register: Crumb, options: { allowOrigins: ['*'] } }, function (err) {
398+
expect(err).to.exist();
399+
expect(err.name).to.equal('ValidationError');
400+
expect(err.message).to.equal('allowOrigins position 0 contains an excluded value');
401+
done();
402+
});
383403
});
384404

385405
it('does not set crumb cookie insecurely', function (done) {

0 commit comments

Comments
 (0)