Skip to content

Commit eca77d9

Browse files
authored
Merge pull request #47 from paperhive/undefined
Add support for undefined allowed parameter
2 parents a53513a + 182094f commit eca77d9

3 files changed

Lines changed: 12 additions & 43 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "walter-whitelist",
3-
"version": "2.0.0-alpha.1",
3+
"version": "2.0.0-alpha.2",
44
"description": "Whitelist javascript objects",
55
"main": "src/index.js",
66
"scripts": {

src/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const whitelist = co.wrap(function* whitelist(src, allowed, _options) {
3131
path: '',
3232
});
3333

34-
if (_.isBoolean(allowed)) {
34+
if (_.isBoolean(allowed) || allowed === undefined) {
3535
if (allowed) return src;
3636
if (options.omitDisallowed) return undefined;
3737
throw new WhitelistError('value not allowed', options.path);

test/whitelist.js

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -6,50 +6,19 @@ const whitelist = require('..');
66

77
const sleep = t => new Promise(resolve => setTimeout(resolve, t));
88

9-
/*
10-
const darth = {
11-
// primitives
12-
name: 'Darth',
13-
// array of primitives
14-
alternativeNames: ['Anakin', 'Lord Vader'],
15-
// nested object
16-
settings: {color: 'red', remember: true},
17-
// array with objects
18-
skills: [{name: 'lightsaber', level: 1}, {name: 'math', level: -1}],
19-
};
20-
21-
const personAllowedRead = (person, options) => {
22-
const isSelf = options.data && options.data.authenticated === person.name;
23-
return whitelist(person, {
24-
name: true,
25-
alternativeNames: [true],
26-
settings: isSelf && {color: true, remember: true},
27-
skills: [{name: true, level: isSelf}],
28-
}, options);
29-
};
30-
31-
const personAllowedWrite = (person, options) => {
32-
return whitelist(person, isSelf && {
33-
name: true,
34-
alternativeNames: true,
35-
settings: {color: true, remember: true},
9+
describe('whitelist()', () => {
10+
describe('allowed is not recognized', () => {
11+
it('should throw', co.wrap(function* () {
12+
yield whitelist(42, 42).should.be.rejectedWith('allowed parameter type not recognized');
13+
}));
3614
});
37-
};
38-
39-
const deathstar = {
40-
name: 'Death star',
41-
progress: 0.8,
42-
owner: darth,
43-
};
4415

45-
const placeAllowedRead = {
46-
name: true,
47-
progress: true,
48-
owner: personAllowedRead,
49-
};
50-
*/
16+
describe('allowed is undefined', () => {
17+
it('should throw', co.wrap(function* () {
18+
yield whitelist(42, undefined).should.be.rejectedWith('value not allowed');
19+
}));
20+
});
5121

52-
describe('whitelist()', () => {
5322
describe('allowed is boolean', () => {
5423
it('should throw if allowed is false', co.wrap(function* () {
5524
yield whitelist(42, false).should.be.rejectedWith('value not allowed');

0 commit comments

Comments
 (0)