diff options
| author | Travis Fischer <[email protected]> | 2021-06-02 13:59:27 -0400 |
|---|---|---|
| committer | Travis Fischer <[email protected]> | 2021-06-02 13:59:27 -0400 |
| commit | f6321fc3249d83a0059ef47978ed101d3c75375f (patch) | |
| tree | 9da8b59a0c94c08f92506e57653b8c9f55fa85e8 /src/normalize-url.test.js | |
| download | cf-image-proxy-f6321fc3249d83a0059ef47978ed101d3c75375f.tar.xz cf-image-proxy-f6321fc3249d83a0059ef47978ed101d3c75375f.zip | |
feat: import from notion2site repo
Diffstat (limited to 'src/normalize-url.test.js')
| -rw-r--r-- | src/normalize-url.test.js | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/src/normalize-url.test.js b/src/normalize-url.test.js new file mode 100644 index 0000000..0d7a9da --- /dev/null +++ b/src/normalize-url.test.js @@ -0,0 +1,156 @@ +import test from 'ava' +import { normalizeUrl } from './normalize-url' + +test('main', (t) => { + t.is(normalizeUrl('http://sindresorhus.com'), 'https://sindresorhus.com') + t.is(normalizeUrl('http://sindresorhus.com '), 'https://sindresorhus.com') + t.is(normalizeUrl('http://sindresorhus.com.'), 'https://sindresorhus.com') + t.is(normalizeUrl('http://SindreSorhus.com'), 'https://sindresorhus.com') + t.is(normalizeUrl('http://sindresorhus.com'), 'https://sindresorhus.com') + t.is(normalizeUrl('HTTP://sindresorhus.com'), 'https://sindresorhus.com') + + // TODO: why isn't this parsed correctly by Node.js URL? + // t.is(normalizeUrl('//sindresorhus.com'), 'https://sindresorhus.com') + + t.is(normalizeUrl('http://sindresorhus.com'), 'https://sindresorhus.com') + t.is(normalizeUrl('http://sindresorhus.com:80'), 'https://sindresorhus.com') + t.is(normalizeUrl('https://sindresorhus.com:443'), 'https://sindresorhus.com') + t.is(normalizeUrl('ftp://sindresorhus.com:21'), 'ftp://sindresorhus.com') + t.is( + normalizeUrl('https://sindresorhus.com/foo/'), + 'https://sindresorhus.com/foo' + ) + t.is( + normalizeUrl('http://sindresorhus.com/?foo=bar baz'), + 'https://sindresorhus.com/?foo=bar+baz' + ) + t.is( + normalizeUrl('https://foo.com/https://bar.com'), + 'https://foo.com/https://bar.com' + ) + t.is( + normalizeUrl('https://foo.com/https://bar.com/foo//bar'), + 'https://foo.com/https://bar.com/foo/bar' + ) + t.is( + normalizeUrl('https://foo.com/http://bar.com'), + 'https://foo.com/http://bar.com' + ) + t.is( + normalizeUrl('https://foo.com/http://bar.com/foo//bar'), + 'https://foo.com/http://bar.com/foo/bar' + ) + t.is( + normalizeUrl('https://sindresorhus.com/%7Efoo/'), + 'https://sindresorhus.com/~foo', + 'decode URI octets' + ) + t.is(normalizeUrl('https://sindresorhus.com/?'), 'https://sindresorhus.com') + t.is(normalizeUrl('https://êxample.com'), 'https://xn--xample-hva.com') + t.is( + normalizeUrl('https://sindresorhus.com/?b=bar&a=foo'), + 'https://sindresorhus.com/?a=foo&b=bar' + ) + t.is( + normalizeUrl('https://sindresorhus.com/?foo=bar*|<>:"'), + 'https://sindresorhus.com/?foo=bar*%7C%3C%3E%3A%22' + ) + t.is( + normalizeUrl('https://sindresorhus.com:5000'), + 'https://sindresorhus.com:5000' + ) + t.is( + normalizeUrl('https://sindresorhus.com/foo#bar'), + 'https://sindresorhus.com/foo#bar' + ) + t.is( + normalizeUrl('https://sindresorhus.com/foo/bar/../baz'), + 'https://sindresorhus.com/foo/baz' + ) + t.is( + normalizeUrl('https://sindresorhus.com/foo/bar/./baz'), + 'https://sindresorhus.com/foo/bar/baz' + ) + t.is( + normalizeUrl( + 'https://i.vimeocdn.com/filter/overlay?src0=https://i.vimeocdn.com/video/598160082_1280x720.jpg&src1=https://f.vimeocdn.com/images_v6/share/play_icon_overlay.png' + ), + 'https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F598160082_1280x720.jpg&src1=https%3A%2F%2Ff.vimeocdn.com%2Fimages_v6%2Fshare%2Fplay_icon_overlay.png' + ) +}) + +test('removeTrailingSlash and removeDirectoryIndex options)', (t) => { + t.is( + normalizeUrl('https://sindresorhus.com/path/'), + 'https://sindresorhus.com/path' + ) + t.is( + normalizeUrl('https://sindresorhus.com/#/path/'), + 'https://sindresorhus.com/#/path/' + ) + t.is( + normalizeUrl('https://sindresorhus.com/foo/#/bar/'), + 'https://sindresorhus.com/foo#/bar/' + ) +}) + +test('sortQueryParameters', (t) => { + t.is( + normalizeUrl('https://sindresorhus.com/?a=Z&b=Y&c=X&d=W'), + 'https://sindresorhus.com/?a=Z&b=Y&c=X&d=W' + ) + t.is( + normalizeUrl('https://sindresorhus.com/?b=Y&c=X&a=Z&d=W'), + 'https://sindresorhus.com/?a=Z&b=Y&c=X&d=W' + ) + t.is( + normalizeUrl('https://sindresorhus.com/?a=Z&d=W&b=Y&c=X'), + 'https://sindresorhus.com/?a=Z&b=Y&c=X&d=W' + ) + t.is(normalizeUrl('https://sindresorhus.com/'), 'https://sindresorhus.com') +}) + +test('invalid urls', (t) => { + t.throws(() => { + normalizeUrl('http://') + }, 'Invalid URL: http://') + + t.throws(() => { + normalizeUrl('/') + }, 'Invalid URL: /') + + t.throws(() => { + normalizeUrl('/relative/path/') + }, 'Invalid URL: /relative/path/') +}) + +test('remove duplicate pathname slashes', (t) => { + t.is( + normalizeUrl('https://sindresorhus.com////foo/bar'), + 'https://sindresorhus.com/foo/bar' + ) + t.is( + normalizeUrl('https://sindresorhus.com////foo////bar'), + 'https://sindresorhus.com/foo/bar' + ) + t.is( + normalizeUrl('ftp://sindresorhus.com//foo'), + 'ftp://sindresorhus.com/foo' + ) + t.is( + normalizeUrl('https://sindresorhus.com:5000///foo'), + 'https://sindresorhus.com:5000/foo' + ) + t.is( + normalizeUrl('https://sindresorhus.com///foo'), + 'https://sindresorhus.com/foo' + ) + t.is( + normalizeUrl('https://sindresorhus.com:5000//foo'), + 'https://sindresorhus.com:5000/foo' + ) + t.is( + normalizeUrl('https://sindresorhus.com//foo'), + 'https://sindresorhus.com/foo' + ) +}) |