summaryrefslogtreecommitdiffstats
path: root/vendor/url/tests/setters_tests.json
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/url/tests/setters_tests.json')
-rw-r--r--vendor/url/tests/setters_tests.json545
1 files changed, 525 insertions, 20 deletions
diff --git a/vendor/url/tests/setters_tests.json b/vendor/url/tests/setters_tests.json
index 4280032a2..2c6ebee64 100644
--- a/vendor/url/tests/setters_tests.json
+++ b/vendor/url/tests/setters_tests.json
@@ -1,6 +1,6 @@
{
"comment": [
- "AS OF https://github.com/jsdom/whatwg-url/commit/35f04dfd3048cf6362f4398745bb13375c5020c2",
+ "# Pulled from https://github.com/web-platform-tests/wpt/blob/befe66343e5f21dc464c8c772c6d20695936714f/url/resources/setters_tests.json",
"## Tests for setters of https://url.spec.whatwg.org/#urlutils-members",
"",
"This file contains a JSON object.",
@@ -120,11 +120,11 @@
}
},
{
- "href": "gopher://example.net:1234",
+ "href": "https://example.net:1234",
"new_value": "file",
"expected": {
- "href": "gopher://example.net:1234",
- "protocol": "gopher:"
+ "href": "https://example.net:1234/",
+ "protocol": "https:"
}
},
{
@@ -146,7 +146,7 @@
},
{
"href": "file:///test",
- "new_value": "gopher",
+ "new_value": "https",
"expected": {
"href": "file:///test",
"protocol": "file:"
@@ -270,6 +270,57 @@
"protocol": "https:",
"port": ""
}
+ },
+ {
+ "comment": "Tab and newline are stripped",
+ "href": "http://test/",
+ "new_value": "h\u000D\u000Att\u0009ps",
+ "expected": {
+ "href": "https://test/",
+ "protocol": "https:",
+ "port": ""
+ }
+ },
+ {
+ "href": "http://test/",
+ "new_value": "https\u000D",
+ "expected": {
+ "href": "https://test/",
+ "protocol": "https:"
+ }
+ },
+ {
+ "comment": "Non-tab/newline C0 controls result in no-op",
+ "href": "http://test/",
+ "new_value": "https\u0000",
+ "expected": {
+ "href": "http://test/",
+ "protocol": "http:"
+ }
+ },
+ {
+ "href": "http://test/",
+ "new_value": "https\u000C",
+ "expected": {
+ "href": "http://test/",
+ "protocol": "http:"
+ }
+ },
+ {
+ "href": "http://test/",
+ "new_value": "https\u000E",
+ "expected": {
+ "href": "http://test/",
+ "protocol": "http:"
+ }
+ },
+ {
+ "href": "http://test/",
+ "new_value": "https\u0020",
+ "expected": {
+ "href": "http://test/",
+ "protocol": "http:"
+ }
}
],
"username": [
@@ -963,6 +1014,16 @@
}
},
{
+ "href": "file://hi/x",
+ "new_value": "",
+ "expected": {
+ "href": "file:///x",
+ "host": "",
+ "hostname": "",
+ "port": ""
+ }
+ },
+ {
"href": "sc://test@test/",
"new_value": "",
"expected": {
@@ -981,6 +1042,62 @@
"hostname": "test",
"port": "12"
}
+ },
+ {
+ "comment": "Leading / is not stripped",
+ "href": "http://example.com/",
+ "new_value": "///bad.com",
+ "expected": {
+ "href": "http://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
+ },
+ {
+ "comment": "Leading / is not stripped",
+ "href": "sc://example.com/",
+ "new_value": "///bad.com",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "a%C2%ADb",
+ "expected": {
+ "href": "https://ab/",
+ "host": "ab",
+ "hostname": "ab"
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "\u00AD",
+ "expected": {
+ "href": "https://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "%C2%AD",
+ "expected": {
+ "href": "https://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "xn--",
+ "expected": {
+ "href": "https://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
}
],
"hostname": [
@@ -1144,24 +1261,24 @@
}
},
{
- "comment": "Stuff after a : delimiter is ignored",
+ "comment": ": delimiter invalidates entire value",
"href": "http://example.net/path",
"new_value": "example.com:8080",
"expected": {
- "href": "http://example.com/path",
- "host": "example.com",
- "hostname": "example.com",
+ "href": "http://example.net/path",
+ "host": "example.net",
+ "hostname": "example.net",
"port": ""
}
},
{
- "comment": "Stuff after a : delimiter is ignored",
+ "comment": ": delimiter invalidates entire value",
"href": "http://example.net:8080/path",
"new_value": "example.com:",
"expected": {
- "href": "http://example.com:8080/path",
- "host": "example.com:8080",
- "hostname": "example.com",
+ "href": "http://example.net:8080/path",
+ "host": "example.net:8080",
+ "hostname": "example.net",
"port": "8080"
}
},
@@ -1287,6 +1404,16 @@
}
},
{
+ "href": "file://hi/x",
+ "new_value": "",
+ "expected": {
+ "href": "file:///x",
+ "host": "",
+ "hostname": "",
+ "port": ""
+ }
+ },
+ {
"href": "sc://test@test/",
"new_value": "",
"expected": {
@@ -1305,6 +1432,83 @@
"hostname": "test",
"port": "12"
}
+ },
+ {
+ "comment": "Drop /. from path",
+ "href": "non-spec:/.//p",
+ "new_value": "h",
+ "expected": {
+ "href": "non-spec://h//p",
+ "host": "h",
+ "hostname": "h",
+ "pathname": "//p"
+ }
+ },
+ {
+ "href": "non-spec:/.//p",
+ "new_value": "",
+ "expected": {
+ "href": "non-spec:////p",
+ "host": "",
+ "hostname": "",
+ "pathname": "//p"
+ }
+ },
+ {
+ "comment": "Leading / is not stripped",
+ "href": "http://example.com/",
+ "new_value": "///bad.com",
+ "expected": {
+ "href": "http://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
+ },
+ {
+ "comment": "Leading / is not stripped",
+ "href": "sc://example.com/",
+ "new_value": "///bad.com",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "a%C2%ADb",
+ "expected": {
+ "href": "https://ab/",
+ "host": "ab",
+ "hostname": "ab"
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "\u00AD",
+ "expected": {
+ "href": "https://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "%C2%AD",
+ "expected": {
+ "href": "https://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
+ },
+ {
+ "href": "https://example.com/",
+ "new_value": "xn--",
+ "expected": {
+ "href": "https://example.com/",
+ "host": "example.com",
+ "hostname": "example.com"
+ }
}
],
"port": [
@@ -1462,6 +1666,17 @@
}
},
{
+ "comment": "Setting port to a string that doesn't parse as a number",
+ "href": "http://example.net:8080/path",
+ "new_value": "randomstring",
+ "expected": {
+ "href": "http://example.net:8080/path",
+ "host": "example.net:8080",
+ "hostname": "example.net",
+ "port": "8080"
+ }
+ },
+ {
"comment": "Port numbers are 16 bit integers, overflowing is an error",
"href": "non-special://example.net:8080/path",
"new_value": "65536",
@@ -1519,11 +1734,35 @@
"href": "javascript://x:12/",
"port": "12"
}
+ },
+ {
+ "comment": "Leading u0009 on special scheme",
+ "href": "https://domain.com:443",
+ "new_value": "\u00098080",
+ "expected": {
+ "port": "8080"
+ }
+ },
+ {
+ "comment": "Leading u0009 on non-special scheme",
+ "href": "wpt++://domain.com:443",
+ "new_value": "\u00098080",
+ "expected": {
+ "port": "8080"
+ }
+ },
+ {
+ "comment": "Should use all ascii prefixed characters as port",
+ "href": "https://www.google.com:4343",
+ "new_value": "4wpt",
+ "expected": {
+ "port": "4"
+ }
}
],
"pathname": [
{
- "comment": "Cannot-be-a-base don’t have a path",
+ "comment": "Opaque paths cannot be set",
"href": "mailto:me@example.net",
"new_value": "/foo",
"expected": {
@@ -1532,6 +1771,67 @@
}
},
{
+ "href": "data:original",
+ "new_value": "new value",
+ "expected": {
+ "href": "data:original",
+ "pathname": "original"
+ }
+ },
+ {
+ "href": "sc:original",
+ "new_value": "new value",
+ "expected": {
+ "href": "sc:original",
+ "pathname": "original"
+ }
+ },
+ {
+ "comment": "Special URLs cannot have their paths erased",
+ "href": "file:///some/path",
+ "new_value": "",
+ "expected": {
+ "href": "file:///",
+ "pathname": "/"
+ }
+ },
+ {
+ "comment": "Non-special URLs can have their paths erased",
+ "href": "foo://somehost/some/path",
+ "new_value": "",
+ "expected": {
+ "href": "foo://somehost",
+ "pathname": ""
+ }
+ },
+ {
+ "comment": "Non-special URLs with an empty host can have their paths erased",
+ "href": "foo:///some/path",
+ "new_value": "",
+ "expected": {
+ "href": "foo://",
+ "pathname": ""
+ }
+ },
+ {
+ "comment": "Path-only URLs cannot have their paths erased",
+ "href": "foo:/some/path",
+ "new_value": "",
+ "expected": {
+ "href": "foo:/",
+ "pathname": "/"
+ }
+ },
+ {
+ "comment": "Path-only URLs always have an initial slash",
+ "href": "foo:/some/path",
+ "new_value": "test",
+ "expected": {
+ "href": "foo:/test",
+ "pathname": "/test"
+ }
+ },
+ {
"href": "unix:/run/foo.socket?timeout=10",
"new_value": "/var/log/../run/bar.socket",
"expected": {
@@ -1628,12 +1928,30 @@
}
},
{
+ "comment": "? doesn't mess up encoding",
+ "href": "http://example.net",
+ "new_value": "/?é",
+ "expected": {
+ "href": "http://example.net/%3F%C3%A9",
+ "pathname": "/%3F%C3%A9"
+ }
+ },
+ {
+ "comment": "# doesn't mess up encoding",
+ "href": "http://example.net",
+ "new_value": "/#é",
+ "expected": {
+ "href": "http://example.net/%23%C3%A9",
+ "pathname": "/%23%C3%A9"
+ }
+ },
+ {
"comment": "File URLs and (back)slashes",
"href": "file://monkey/",
"new_value": "\\\\",
"expected": {
- "href": "file://monkey/",
- "pathname": "/"
+ "href": "file://monkey//",
+ "pathname": "//"
}
},
{
@@ -1641,8 +1959,8 @@
"href": "file:///unicorn",
"new_value": "//\\/",
"expected": {
- "href": "file:///",
- "pathname": "/"
+ "href": "file://////",
+ "pathname": "////"
}
},
{
@@ -1650,8 +1968,77 @@
"href": "file:///unicorn",
"new_value": "//monkey/..//",
"expected": {
- "href": "file:///",
- "pathname": "/"
+ "href": "file://///",
+ "pathname": "///"
+ }
+ },
+ {
+ "comment": "Serialize /. in path",
+ "href": "non-spec:/",
+ "new_value": "/.//p",
+ "expected": {
+ "href": "non-spec:/.//p",
+ "pathname": "//p"
+ }
+ },
+ {
+ "href": "non-spec:/",
+ "new_value": "/..//p",
+ "expected": {
+ "href": "non-spec:/.//p",
+ "pathname": "//p"
+ }
+ },
+ {
+ "href": "non-spec:/",
+ "new_value": "//p",
+ "expected": {
+ "href": "non-spec:/.//p",
+ "pathname": "//p"
+ }
+ },
+ {
+ "comment": "Drop /. from path",
+ "href": "non-spec:/.//",
+ "new_value": "p",
+ "expected": {
+ "href": "non-spec:/p",
+ "pathname": "/p"
+ }
+ },
+ {
+ "comment": "Non-special URLs with non-opaque paths percent-encode U+0020",
+ "href": "data:/nospace",
+ "new_value": "space ",
+ "expected": {
+ "href": "data:/space%20",
+ "pathname": "/space%20"
+ }
+ },
+ {
+ "href": "sc:/nospace",
+ "new_value": "space ",
+ "expected": {
+ "href": "sc:/space%20",
+ "pathname": "/space%20"
+ }
+ },
+ {
+ "comment": "Trailing space should be encoded",
+ "href": "http://example.net",
+ "new_value": " ",
+ "expected": {
+ "href": "http://example.net/%20",
+ "pathname": "/%20"
+ }
+ },
+ {
+ "comment": "Trailing C0 control should be encoded",
+ "href": "http://example.net",
+ "new_value": "\u0000",
+ "expected": {
+ "href": "http://example.net/%00",
+ "pathname": "/%00"
}
}
],
@@ -1737,6 +2124,60 @@
"href": "http://example.net/?%c3%89t%C3%A9",
"search": "?%c3%89t%C3%A9"
}
+ },
+ {
+ "comment": "Drop trailing spaces from trailing opaque paths",
+ "href": "data:space ?query",
+ "new_value": "",
+ "expected": {
+ "href": "data:space",
+ "pathname": "space",
+ "search": ""
+ }
+ },
+ {
+ "href": "sc:space ?query",
+ "new_value": "",
+ "expected": {
+ "href": "sc:space",
+ "pathname": "space",
+ "search": ""
+ }
+ },
+ {
+ "comment": "Do not drop trailing spaces from non-trailing opaque paths",
+ "href": "data:space ?query#fragment",
+ "new_value": "",
+ "expected": {
+ "href": "data:space #fragment",
+ "search": ""
+ }
+ },
+ {
+ "href": "sc:space ?query#fragment",
+ "new_value": "",
+ "expected": {
+ "href": "sc:space #fragment",
+ "search": ""
+ }
+ },
+ {
+ "comment": "Trailing space should be encoded",
+ "href": "http://example.net",
+ "new_value": " ",
+ "expected": {
+ "href": "http://example.net/?%20",
+ "search": "?%20"
+ }
+ },
+ {
+ "comment": "Trailing C0 control should be encoded",
+ "href": "http://example.net",
+ "new_value": "\u0000",
+ "expected": {
+ "href": "http://example.net/?%00",
+ "search": "?%00"
+ }
}
],
"hash": [
@@ -1871,6 +2312,70 @@
"href": "javascript:alert(1)#castle",
"hash": "#castle"
}
+ },
+ {
+ "comment": "Drop trailing spaces from trailing opaque paths",
+ "href": "data:space #fragment",
+ "new_value": "",
+ "expected": {
+ "href": "data:space",
+ "pathname": "space",
+ "hash": ""
+ }
+ },
+ {
+ "href": "sc:space #fragment",
+ "new_value": "",
+ "expected": {
+ "href": "sc:space",
+ "pathname": "space",
+ "hash": ""
+ }
+ },
+ {
+ "comment": "Do not drop trailing spaces from non-trailing opaque paths",
+ "href": "data:space ?query#fragment",
+ "new_value": "",
+ "expected": {
+ "href": "data:space ?query",
+ "hash": ""
+ }
+ },
+ {
+ "href": "sc:space ?query#fragment",
+ "new_value": "",
+ "expected": {
+ "href": "sc:space ?query",
+ "hash": ""
+ }
+ },
+ {
+ "comment": "Trailing space should be encoded",
+ "href": "http://example.net",
+ "new_value": " ",
+ "expected": {
+ "href": "http://example.net/#%20",
+ "hash": "#%20"
+ }
+ },
+ {
+ "comment": "Trailing C0 control should be encoded",
+ "href": "http://example.net",
+ "new_value": "\u0000",
+ "expected": {
+ "href": "http://example.net/#%00",
+ "hash": "#%00"
+ }
+ }
+ ],
+ "href": [
+ {
+ "href": "file:///var/log/system.log",
+ "new_value": "http://0300.168.0xF0",
+ "expected": {
+ "href": "http://192.168.0.240/",
+ "protocol": "http:"
+ }
}
]
}