diff options
| author | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
|---|---|---|
| committer | 8cy <[email protected]> | 2020-04-03 02:37:42 -0700 |
| commit | 60867fb030bae582082340ead7dbc7efdc2f5398 (patch) | |
| tree | 4c6a7356351be2e4914e15c4703172597c45656e /node_modules/is-url/test | |
| parent | commenting (diff) | |
| download | s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.tar.xz s5nical-60867fb030bae582082340ead7dbc7efdc2f5398.zip | |
2020/04/03, 02:34, v1.2.0
Diffstat (limited to 'node_modules/is-url/test')
| -rw-r--r-- | node_modules/is-url/test/index.js | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/node_modules/is-url/test/index.js b/node_modules/is-url/test/index.js new file mode 100644 index 0000000..404e1b6 --- /dev/null +++ b/node_modules/is-url/test/index.js @@ -0,0 +1,149 @@ + +try { + var url = require('is-url'); +} catch (e) { + var url = require('..'); +} + +var assert = require('assert'); + +describe('is-url', function () { + describe('valid', function () { + it('http://google.com', function () { + assert(url('http://google.com')); + }); + + it('https://google.com', function () { + assert(url('https://google.com')); + }); + + it('ftp://google.com', function () { + assert(url('ftp://google.com')); + }); + + it('http://www.google.com', function () { + assert(url('http://www.google.com')); + }); + + it('http://google.com/something', function () { + assert(url('http://google.com/something')); + }); + + it('http://google.com?q=query', function () { + assert(url('http://google.com?q=query')); + }); + + it('http://google.com#hash', function () { + assert(url('http://google.com#hash')); + }); + + it('http://google.com/something?q=query#hash', function () { + assert(url('http://google.com/something?q=query#hash')); + }); + + it('http://google.co.uk', function () { + assert(url('http://google.co.uk')); + }); + + it('http://www.google.co.uk', function () { + assert(url('http://www.google.co.uk')); + }); + + it('http://google.cat', function () { + assert(url('http://google.cat')); + }); + + it('https://[email protected]/13176', function () { + assert(url('https://[email protected]/13176')); + }); + + it('http://0.0.0.0', function () { + assert(url('http://0.0.0.0')); + }); + + it('http://localhost', function () { + assert(url('http://localhost')); + }); + + it('postgres://u:[email protected]:5702/db', function () { + assert(url('postgres://u:[email protected]:5702/db')); + }); + + it('redis://:[email protected]:13271', function () { + assert(url('redis://:[email protected]:13271')); + }); + + it('mongodb://u:[email protected]:10064/db', function () { + assert(url('mongodb://u:[email protected]:10064/db')); + }); + + it('ws://chat.example.com/games', function () { + assert(url('ws://chat.example.com/games')); + }); + + it('wss://secure.example.com/biz', function () { + assert(url('wss://secure.example.com/biz')); + }); + + it('http://localhost:4000', function () { + assert(url('http://localhost:4000')); + }); + + it('http://localhost:342/a/path', function () { + assert(url('http://localhost:342/a/path')); + }); + + it('//google.com', function () { + assert(url('//google.com')); + }); + }); + + describe('invalid', function () { + it('http://', function () { + assert(!url('http://')); + }); + + it('http://google', function () { + assert(!url('http://google')); + }); + + it('http://google.', function () { + assert(!url('http://google.')); + }); + + it('google', function () { + assert(!url('google')); + }); + + it('google.com', function () { + assert(!url('google.com')); + }); + + it('empty', function () { + assert(!url('')); + }); + + it('undef', function () { + assert(!url(undefined)); + }); + + it('object', function () { + assert(!url({})); + }); + + it('re', function () { + assert(!url(/abc/)); + }); + }); + + describe('redos', function () { + it('redos exploit', function () { + // Invalid. This should be discovered in under 1 second. + var attackString = 'a://localhost' + '9'.repeat(100000) + '\t'; + var before = process.hrtime(); + assert(!url(attackString), 'attackString was valid'); + var elapsed = process.hrtime(before); + assert(elapsed[0] < 1, 'attackString took ' + elapsed[0] + ' > 1 seconds'); + }); + }); +}); |