| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- {
- "comment": [
- "## Tests for setters of https://url.spec.whatwg.org/#urlutils-members",
- "",
- "This file contains a JSON object.",
- "Other than 'comment', each key is an attribute of the `URL` interface",
- "defined in WHATWG’s URL Standard.",
- "The values are arrays of test case objects for that attribute.",
- "",
- "To run a test case for the attribute `attr`:",
- "",
- "* Create a new `URL` object with the value for the 'href' key",
- " the constructor single parameter. (Without a base URL.)",
- " This must not throw.",
- "* Set the attribute `attr` to (invoke its setter with)",
- " with the value of for 'new_value' key.",
- "* The value for the 'expected' key is another object.",
- " For each `key` / `value` pair of that object,",
- " get the attribute `key` (invoke its getter).",
- " The returned string must be equal to `value`.",
- "",
- "Note: the 'href' setter is already covered by urltestdata.json."
- ],
- "protocol": [
- {
- "comment": "The empty string is not a valid scheme. Setter leaves the URL unchanged.",
- "href": "a://example.net",
- "new_value": "",
- "expected": {
- "href": "a://example.net/",
- "protocol": "a:"
- }
- },
- {
- "href": "a://example.net",
- "new_value": "b",
- "expected": {
- "href": "b://example.net/",
- "protocol": "b:"
- }
- },
- {
- "comment": "Upper-case ASCII is lower-cased",
- "href": "a://example.net",
- "new_value": "B",
- "expected": {
- "href": "b://example.net/",
- "protocol": "b:"
- }
- },
- {
- "comment": "Non-ASCII is rejected",
- "href": "a://example.net",
- "new_value": "é",
- "expected": {
- "href": "a://example.net/",
- "protocol": "a:"
- }
- },
- {
- "comment": "No leading digit",
- "href": "a://example.net",
- "new_value": "0b",
- "expected": {
- "href": "a://example.net/",
- "protocol": "a:"
- }
- },
- {
- "comment": "No leading punctuation",
- "href": "a://example.net",
- "new_value": "+b",
- "expected": {
- "href": "a://example.net/",
- "protocol": "a:"
- }
- },
- {
- "href": "a://example.net",
- "new_value": "bC0+-.",
- "expected": {
- "href": "bc0+-.://example.net/",
- "protocol": "bc0+-.:"
- }
- },
- {
- "comment": "Non-ASCII is rejected",
- "href": "a://example.net",
- "new_value": "bé",
- "expected": {
- "href": "a://example.net/",
- "protocol": "a:"
- }
- },
- {
- "comment": "Spec deviation: from special scheme to not is not problematic. https://github.com/whatwg/url/issues/104",
- "href": "http://example.net",
- "new_value": "b",
- "expected": {
- "href": "b://example.net/",
- "protocol": "b:"
- }
- },
- {
- "comment": "Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
- "href": "mailto:me@example.net",
- "new_value": "http",
- "expected": {
- "href": "mailto:me@example.net",
- "protocol": "mailto:"
- }
- },
- {
- "comment": "Spec deviation: from non-special scheme with a host to special is not problematic. https://github.com/whatwg/url/issues/104",
- "href": "ssh://me@example.net",
- "new_value": "http",
- "expected": {
- "href": "http://me@example.net/",
- "protocol": "http:"
- }
- },
- {
- "comment": "Stuff after the first ':' is ignored",
- "href": "http://example.net",
- "new_value": "https:foo : bar",
- "expected": {
- "href": "https://example.net/",
- "protocol": "https:"
- }
- },
- {
- "comment": "Stuff after the first ':' is ignored",
- "href": "data:text/html,<p>Test",
- "new_value": "view-source+data:foo : bar",
- "expected": {
- "href": "view-source+data:text/html,<p>Test",
- "protocol": "view-source+data:"
- }
- }
- ],
- "username": [
- {
- "comment": "No host means no username",
- "href": "file:///home/you/index.html",
- "new_value": "me",
- "expected": {
- "href": "file:///home/you/index.html",
- "username": ""
- }
- },
- {
- "comment": "Cannot-be-a-base means no username",
- "href": "mailto:you@example.net",
- "new_value": "me",
- "expected": {
- "href": "mailto:you@example.net",
- "username": ""
- }
- },
- {
- "href": "http://example.net",
- "new_value": "me",
- "expected": {
- "href": "http://me@example.net/",
- "username": "me"
- }
- },
- {
- "href": "http://:secret@example.net",
- "new_value": "me",
- "expected": {
- "href": "http://me:secret@example.net/",
- "username": "me"
- }
- },
- {
- "href": "http://me@example.net",
- "new_value": "",
- "expected": {
- "href": "http://example.net/",
- "username": ""
- }
- },
- {
- "href": "http://me:secret@example.net",
- "new_value": "",
- "expected": {
- "href": "http://:secret@example.net/",
- "username": ""
- }
- },
- {
- "comment": "UTF-8 percent encoding with the userinfo encode set.",
- "href": "http://example.net",
- "new_value": "\u0000\u0001\t\n\r\u001f !\"#$%&'()*+,-./09:;<=>?@AZ[\\]^_`az{|}~\u007f\u0080\u0081Éé",
- "expected": {
- "href": "http://%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9@example.net/",
- "username": "%00%01%09%0A%0D%1F%20!%22%23$%&'()*+,-.%2F09%3A%3B%3C%3D%3E%3F%40AZ%5B%5C%5D%5E_%60az%7B%7C%7D~%7F%C2%80%C2%81%C3%89%C3%A9"
- }
- },
- {
- "comment": "Bytes already percent-encoded are left as-is.",
- "href": "http://example.net",
- "new_value": "%c3%89t%c3%a9",
- "expected": {
- "href": "http://%c3%89t%c3%a9@example.net/",
- "username": "%c3%89t%c3%a9"
- }
- }
- ],
- "password": [],
- "host": [],
- "hostname": [],
- "port": [],
- "pathname": [],
- "search": [],
- "hash": []
- }
|