diff --git a/src/URI.js b/src/URI.js index 03f2c6c1..90514f70 100644 --- a/src/URI.js +++ b/src/URI.js @@ -77,6 +77,10 @@ return this; } + function isInteger(value) { + return /^[0-9]+$/.test(value); + } + URI.version = '1.18.11'; var p = URI.prototype; @@ -1058,7 +1062,7 @@ } var port = Number(v); - if (Number.isInteger(port) && (port > 0) && (port < 65536)) { + if (isInteger(port) && (port > 0) && (port < 65536)) { return; } diff --git a/test/test.js b/test/test.js index 8ebf8623..c19db70a 100644 --- a/test/test.js +++ b/test/test.js @@ -1681,6 +1681,36 @@ deepEqual(links, expected, 'urls extracted'); equal(result, source, 'source not modified'); }); + test('ensureValidPort', function() { + + function testPort(value) { + var result = true; + try { + URI.ensureValidPort(value); + } catch(e) { + result = false; + } + + return result; + } + + equal(testPort(8000), true); + equal(testPort('8080'), true); + + equal(testPort(0), true); + equal(testPort(1), true); + + equal(testPort(65535), true); + equal(testPort(65536), false); + + equal(testPort(-8080), false); + equal(testPort('-8080'), false); + + equal(testPort('aaa8080'), false); + equal(testPort('8080a'), false); + + equal(testPort(8080.2), false); + }); test('noConflict', function() { var actual_lib = URI; // actual library; after loading, before noConflict() var unconflicted = URI.noConflict();