58 lines
1.7 KiB
HTML
58 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<script src="resources/utilities.js"></script>
|
|
<!-- Set the base so that the current URL does not affect the tests. -->
|
|
<base href="">
|
|
</head>
|
|
<body>
|
|
|
|
<script>
|
|
description("This ensure we do not mess up the bytes when an URL is partially parsed and is invalid.")
|
|
|
|
// Those are all invalid URLs. They should not be partially modified by the parser.
|
|
var testSet = [
|
|
// Empty Authority for a standard hierachical URL.
|
|
'http:///',
|
|
'https:///',
|
|
'ftp:///',
|
|
'gopher:///',
|
|
'ws:///',
|
|
'wss:///',
|
|
|
|
// Invalid Authority.
|
|
'foo://tête à tête@host/',
|
|
'foo://user:tête à tête@host/',
|
|
' foo://<>@host/ ',
|
|
' foo://user:<>@host/ ',
|
|
'foo://user:password@[xxxxx]/tête à tête/',
|
|
|
|
// The '?' is a path separator and make sure the hostname is not encoded in punicode. The hostname is an invalid IPV6 hostname.
|
|
'foo://user:password@[?tête à tête/',
|
|
'foo://user:password@[?tête à tête]/',
|
|
'foo://user:password@host:tête à tête/',
|
|
'foo://user:password@host:80tête à tête',
|
|
'foo://user:password@host:tête à tête/',
|
|
'foo://user:password@host:80tête à tête',
|
|
// The schemes "ws:", "ftp:", "http:", "https:", "gother:" take a shortcut during parsing so we test them separately.
|
|
'ws:/tête',
|
|
'ftp:/tête',
|
|
'http:/tête',
|
|
'https:/tête',
|
|
'gopher:/t%C3%AAte',
|
|
];
|
|
|
|
for (var i = 0; i < testSet.length; ++i) {
|
|
src = canonicalize(testSet[i]);
|
|
expected = testSet[i].trim();
|
|
shouldBe('src', 'expected');
|
|
}
|
|
|
|
successfullyParsed = true;
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|