Skip to content

Commit

Permalink
fix truthy prototype values
Browse files Browse the repository at this point in the history
  • Loading branch information
Matt-Esch committed Nov 30, 2014
1 parent 4f080bb commit b62a4a7
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
10 changes: 6 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,15 @@ function get(pathname) {
var hash = this._hash;
var splat = null;
var params = {};
var staticPath;
var variablePaths;

for (var i = 0; i < pathSegments.length; i++) {
var segment = pathSegments[i];

if (!segment && !hash.isSplat) {
continue;
} else if ((staticPath = hash.staticPaths[segment])) {
hash = staticPath;
} else if (hash.staticPaths.hasOwnProperty(segment)) {
hash = hash.staticPaths[segment];
} else if ((variablePaths = hash.variablePaths)) {
if (variablePaths.isSplat) {
splat = pathSegments.slice(i).join('/');
Expand Down Expand Up @@ -84,7 +83,10 @@ function set(pathname, handler) {
}
} else {
hash = (
hash.staticPaths[segment] ||
(
hash.staticPaths.hasOwnProperty(segment) &&
hash.staticPaths[segment]
) ||
(hash.staticPaths[segment] = new RouteNode(hash, segment))
);
}
Expand Down
20 changes: 20 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -420,3 +420,23 @@ test('splat routes do not work on variable nodes', function (assert) {
assert.strictEqual(exception.conflictPath, '/:var/');
assert.end();
});

test('does not conflict with prototype', function (assert) {
// Arrange
var hash = HttpHash();

function validHandler() {}

hash.set('/toString/valueOf', validHandler);

//Act
var toStringResult = hash.get('toString');
var valueOfResult = hash.get('valueOf');
var pathResult = hash.get('/toString/valueOf');

// Assert
assert.strictEqual(toStringResult.handler, null);
assert.strictEqual(valueOfResult.handler, null);
assert.strictEqual(pathResult.handler, validHandler);
assert.end();
});

0 comments on commit b62a4a7

Please sign in to comment.