1 Canonicalization of standard URLs 2 3 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". 4 5 6 PASS canonicalize('http://www.google.com/foo?bar=baz#') is 'http://www.google.com/foo?bar=baz#' 7 FAIL canonicalize('http://www.google.com/foo?bar=baz# ') should be http://www.google.com/foo?bar=baz# . Was http://www.google.com/foo?bar=baz# %BB. 8 PASS canonicalize('http://[www.google.com]/') is 'http://[www.google.com]/' 9 PASS canonicalize('http://www.google.com') is 'http://www.google.com/' 10 FAIL canonicalize('http:////////user:@google.com:99?foo') should be http://user@google.com:99/?foo. Was http://////user:@google.com:99?foo. 11 FAIL canonicalize('http://192.0x00A80001') should be http://192.168.0.1/. Was http://192.0x00A80001/. 12 FAIL canonicalize('http://www/foo%2Ehtml') should be http://www/foo.html. Was http://www/foo%2Ehtml. 13 PASS canonicalize('http://user:pass@/') is 'http://user:pass@/' 14 PASS canonicalize('http://%25DOMAIN:foobar@foodomain.com/') is 'http://%25DOMAIN:foobar@foodomain.com/' 15 PASS canonicalize('http:\\\\www.google.com\\foo') is 'http://www.google.com/foo' 16 FAIL canonicalize('http://www.google.com/asdf#\ud800') should be http://www.google.com/asdf#. Was http://www.google.com/asdf#%26%2355296%3B. 17 PASS canonicalize('http://foo:80/') is 'http://foo/' 18 PASS canonicalize('http://foo:81/') is 'http://foo:81/' 19 PASS canonicalize('httpa://foo:80/') is 'httpa://foo:80/' 20 PASS canonicalize('http://foo:-80/') is 'http://foo:-80/' 21 PASS canonicalize('https://foo:443/') is 'https://foo/' 22 PASS canonicalize('https://foo:80/') is 'https://foo:80/' 23 PASS canonicalize('ftp://foo:21/') is 'ftp://foo/' 24 PASS canonicalize('ftp://foo:80/') is 'ftp://foo:80/' 25 PASS canonicalize('gopher://foo:70/') is 'gopher://foo/' 26 PASS canonicalize('gopher://foo:443/') is 'gopher://foo:443/' 27 PASS canonicalize('ws://foo:80/') is 'ws://foo/' 28 PASS canonicalize('ws://foo:81/') is 'ws://foo:81/' 29 PASS canonicalize('ws://foo:443/') is 'ws://foo:443/' 30 PASS canonicalize('ws://foo:815/') is 'ws://foo:815/' 31 PASS canonicalize('wss://foo:80/') is 'wss://foo:80/' 32 PASS canonicalize('wss://foo:81/') is 'wss://foo:81/' 33 PASS canonicalize('wss://foo:443/') is 'wss://foo/' 34 PASS canonicalize('wss://foo:815/') is 'wss://foo:815/' 35 PASS canonicalize('http:/example.com/') is 'http://example.com/' 36 PASS canonicalize('ftp:/example.com/') is 'ftp://example.com/' 37 PASS canonicalize('https:/example.com/') is 'https://example.com/' 38 PASS canonicalize('madeupscheme:/example.com/') is 'madeupscheme:/example.com/' 39 FAIL canonicalize('file:/example.com/') should be file://localhost/example.com/. Was file:///example.com/. 40 PASS canonicalize('ftps:/example.com/') is 'ftps:/example.com/' 41 PASS canonicalize('gopher:/example.com/') is 'gopher://example.com/' 42 PASS canonicalize('ws:/example.com/') is 'ws://example.com/' 43 PASS canonicalize('wss:/example.com/') is 'wss://example.com/' 44 PASS canonicalize('data:/example.com/') is 'data:/example.com/' 45 PASS canonicalize('javascript:/example.com/') is 'javascript:/example.com/' 46 PASS canonicalize('mailto:/example.com/') is 'mailto:/example.com/' 47 PASS canonicalize('http:example.com/') is 'http://example.com/' 48 PASS canonicalize('ftp:example.com/') is 'ftp://example.com/' 49 PASS canonicalize('https:example.com/') is 'https://example.com/' 50 PASS canonicalize('madeupscheme:example.com/') is 'madeupscheme:example.com/' 51 PASS canonicalize('ftps:example.com/') is 'ftps:example.com/' 52 PASS canonicalize('gopher:example.com/') is 'gopher://example.com/' 53 PASS canonicalize('ws:example.com/') is 'ws://example.com/' 54 PASS canonicalize('wss:example.com/') is 'wss://example.com/' 55 PASS canonicalize('data:example.com/') is 'data:example.com/' 56 PASS canonicalize('javascript:example.com/') is 'javascript:example.com/' 57 PASS canonicalize('mailto:example.com/') is 'mailto:example.com/' 58 PASS canonicalize('javascript:alert(\t 1 \n\r)') is 'javascript:alert( 1 )' 59 PASS canonicalize('javascript:alert(" ")') is 'javascript:alert(" %01 %CE%B2 ")' 60 PASS successfullyParsed is true 61 62 TEST COMPLETE 63 64