Browse Source

test: synchronize WPT url setter test data

Updates:
+ Bring tests url-setter-tests from WPT, and put it as JavaScript
+ Comment out unpassed tests

Refs: https://github.com/w3c/web-platform-tests/pull/5112
Refs: https://github.com/nodejs/node/pull/11887
PR-URL: https://github.com/nodejs/node/pull/12058
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
v6
Daijiro Wachi 8 years ago
parent
commit
843b7e68ca
  1. 545
      test/fixtures/url-setter-tests.js
  2. 2
      test/parallel/test-whatwg-url-setters.js

545
test/fixtures/url-setter-tests.json → test/fixtures/url-setter-tests.js

@ -1,6 +1,12 @@
'use strict';
/* WPT Refs:
https://github.com/w3c/web-platform-tests/blob/e48dd15/url/setters_tests.json
License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html
*/
module.exports =
{ {
"comment": [ "comment": [
"License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html",
"## Tests for setters of https://url.spec.whatwg.org/#urlutils-members", "## Tests for setters of https://url.spec.whatwg.org/#urlutils-members",
"", "",
"This file contains a JSON object.", "This file contains a JSON object.",
@ -40,6 +46,14 @@
"protocol": "b:" "protocol": "b:"
} }
}, },
{
"href": "javascript:alert(1)",
"new_value": "defuse",
"expected": {
"href": "defuse:alert(1)",
"protocol": "defuse:"
}
},
{ {
"comment": "Upper-case ASCII is lower-cased", "comment": "Upper-case ASCII is lower-cased",
"href": "a://example.net", "href": "a://example.net",
@ -103,11 +117,11 @@
} }
}, },
{ {
"comment": "Can’t switch from special scheme to non-special", "comment": "Can’t switch from URL containing username/password/port to file",
"href": "http://example.net", "href": "http://test@example.net",
"new_value": "b", "new_value": "file",
"expected": { "expected": {
"href": "http://example.net/", "href": "http://test@example.net/",
"protocol": "http:" "protocol": "http:"
} }
}, },
@ -152,6 +166,15 @@
"protocol": "file:" "protocol": "file:"
} }
}, },
{
"comment": "Can’t switch from special scheme to non-special",
"href": "http://example.net",
"new_value": "b",
"expected": {
"href": "http://example.net/",
"protocol": "http:"
}
},
{ {
"href": "file://hi/path", "href": "file://hi/path",
"new_value": "s", "new_value": "s",
@ -273,6 +296,14 @@
"username": "" "username": ""
} }
}, },
{
"href": "javascript:alert(1)",
"new_value": "wario",
"expected": {
"href": "javascript:alert(1)",
"username": ""
}
},
{ {
"href": "http://example.net", "href": "http://example.net",
"new_value": "me", "new_value": "me",
@ -322,7 +353,31 @@
"href": "http://%c3%89t%C3%A9@example.net/", "href": "http://%c3%89t%C3%A9@example.net/",
"username": "%c3%89t%C3%A9" "username": "%c3%89t%C3%A9"
} }
} },
{
"href": "sc:///",
"new_value": "x",
"expected": {
"href": "sc:///",
"username": ""
}
},
{
"href": "javascript://x/",
"new_value": "wario",
"expected": {
"href": "javascript://wario@x/",
"username": "wario"
}
},
// {
// "href": "file://test/",
// "new_value": "test",
// "expected": {
// "href": "file://test/",
// "username": ""
// }
// }
], ],
"password": [ "password": [
{ {
@ -401,9 +456,134 @@
"href": "http://:%c3%89t%C3%A9@example.net/", "href": "http://:%c3%89t%C3%A9@example.net/",
"password": "%c3%89t%C3%A9" "password": "%c3%89t%C3%A9"
} }
} },
{
"href": "sc:///",
"new_value": "x",
"expected": {
"href": "sc:///",
"password": ""
}
},
{
"href": "javascript://x/",
"new_value": "bowser",
"expected": {
"href": "javascript://:bowser@x/",
"password": "bowser"
}
},
// {
// "href": "file://test/",
// "new_value": "test",
// "expected": {
// "href": "file://test/",
// "password": ""
// }
// }
], ],
"host": [ "host": [
{
"comment": "Non-special scheme",
"href": "sc://x/",
"new_value": "\u0000",
"expected": {
"href": "sc://x/",
"host": "x",
"hostname": "x"
}
},
// {
// "href": "sc://x/",
// "new_value": "\u0009",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "\u000A",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "\u000D",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
{
"href": "sc://x/",
"new_value": " ",
"expected": {
"href": "sc://x/",
"host": "x",
"hostname": "x"
}
},
// {
// "href": "sc://x/",
// "new_value": "#",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "/",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "?",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
{
"href": "sc://x/",
"new_value": "@",
"expected": {
"href": "sc://x/",
"host": "x",
"hostname": "x"
}
},
// {
// "href": "sc://x/",
// "new_value": "ß",
// "expected": {
// "href": "sc://%C3%9F/",
// "host": "%C3%9F",
// "hostname": "%C3%9F"
// }
// },
{
"comment": "IDNA Nontransitional_Processing",
"href": "https://x/",
"new_value": "ß",
"expected": {
"href": "https://xn--zca/",
"host": "xn--zca",
"hostname": "xn--zca"
}
},
{ {
"comment": "Cannot-be-a-base means no host", "comment": "Cannot-be-a-base means no host",
"href": "mailto:me@example.net", "href": "mailto:me@example.net",
@ -625,7 +805,7 @@
} }
}, },
{ {
"comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain", "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
"href": "view-source+http://example.net/path", "href": "view-source+http://example.net/path",
"new_value": "example.com\\stuff", "new_value": "example.com\\stuff",
"expected": { "expected": {
@ -689,9 +869,187 @@
"hostname": "example.com", "hostname": "example.com",
"port": "" "port": ""
} }
} },
{
"comment": "Broken IPv6",
"href": "http://example.net/",
"new_value": "[google.com]",
"expected": {
"href": "http://example.net/",
"host": "example.net",
"hostname": "example.net"
}
},
// {
// "href": "http://example.net/",
// "new_value": "[::1.2.3.4x]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "http://example.net/",
// "new_value": "[::1.2.3.]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "http://example.net/",
// "new_value": "[::1.2.]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "http://example.net/",
// "new_value": "[::1.]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "file://y/",
// "new_value": "x:123",
// "expected": {
// "href": "file://y/",
// "host": "y",
// "hostname": "y",
// "port": ""
// }
// },
// {
// "href": "file://y/",
// "new_value": "loc%41lhost",
// "expected": {
// "href": "file:///",
// "host": "",
// "hostname": "",
// "port": ""
// }
// },
// {
// "href": "file://hi/x",
// "new_value": "",
// "expected": {
// "href": "file:///x",
// "host": "",
// "hostname": "",
// "port": ""
// }
// },
// {
// "href": "sc://test@test/",
// "new_value": "",
// "expected": {
// "href": "sc://test@test/",
// "host": "test",
// "hostname": "test",
// "username": "test"
// }
// },
// {
// "href": "sc://test:12/",
// "new_value": "",
// "expected": {
// "href": "sc://test:12/",
// "host": "test:12",
// "hostname": "test",
// "port": "12"
// }
// }
], ],
"hostname": [ "hostname": [
{
"comment": "Non-special scheme",
"href": "sc://x/",
"new_value": "\u0000",
"expected": {
"href": "sc://x/",
"host": "x",
"hostname": "x"
}
},
// {
// "href": "sc://x/",
// "new_value": "\u0009",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "\u000A",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "\u000D",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
{
"href": "sc://x/",
"new_value": " ",
"expected": {
"href": "sc://x/",
"host": "x",
"hostname": "x"
}
},
// {
// "href": "sc://x/",
// "new_value": "#",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "/",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
// {
// "href": "sc://x/",
// "new_value": "?",
// "expected": {
// "href": "sc:///",
// "host": "",
// "hostname": ""
// }
// },
{
"href": "sc://x/",
"new_value": "@",
"expected": {
"href": "sc://x/",
"host": "x",
"hostname": "x"
}
},
{ {
"comment": "Cannot-be-a-base means no host", "comment": "Cannot-be-a-base means no host",
"href": "mailto:me@example.net", "href": "mailto:me@example.net",
@ -836,7 +1194,7 @@
} }
}, },
{ {
"comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain", "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
"href": "view-source+http://example.net/path", "href": "view-source+http://example.net/path",
"new_value": "example.com\\stuff", "new_value": "example.com\\stuff",
"expected": { "expected": {
@ -845,7 +1203,103 @@
"hostname": "example.net", "hostname": "example.net",
"port": "" "port": ""
} }
} },
{
"comment": "Broken IPv6",
"href": "http://example.net/",
"new_value": "[google.com]",
"expected": {
"href": "http://example.net/",
"host": "example.net",
"hostname": "example.net"
}
},
// {
// "href": "http://example.net/",
// "new_value": "[::1.2.3.4x]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "http://example.net/",
// "new_value": "[::1.2.3.]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "http://example.net/",
// "new_value": "[::1.2.]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "http://example.net/",
// "new_value": "[::1.]",
// "expected": {
// "href": "http://example.net/",
// "host": "example.net",
// "hostname": "example.net"
// }
// },
// {
// "href": "file://y/",
// "new_value": "x:123",
// "expected": {
// "href": "file://y/",
// "host": "y",
// "hostname": "y",
// "port": ""
// }
// },
// {
// "href": "file://y/",
// "new_value": "loc%41lhost",
// "expected": {
// "href": "file:///",
// "host": "",
// "hostname": "",
// "port": ""
// }
// },
// {
// "href": "file://hi/x",
// "new_value": "",
// "expected": {
// "href": "file:///x",
// "host": "",
// "hostname": "",
// "port": ""
// }
// },
// {
// "href": "sc://test@test/",
// "new_value": "",
// "expected": {
// "href": "sc://test@test/",
// "host": "test",
// "hostname": "test",
// "username": "test"
// }
// },
// {
// "href": "sc://test:12/",
// "new_value": "",
// "expected": {
// "href": "sc://test:12/",
// "host": "test:12",
// "hostname": "test",
// "port": "12"
// }
// }
], ],
"port": [ "port": [
{ {
@ -1000,6 +1454,65 @@
"hostname": "example.net", "hostname": "example.net",
"port": "8080" "port": "8080"
} }
},
{
"comment": "Port numbers are 16 bit integers, overflowing is an error",
"href": "non-special://example.net:8080/path",
"new_value": "65536",
"expected": {
"href": "non-special://example.net:8080/path",
"host": "example.net:8080",
"hostname": "example.net",
"port": "8080"
}
},
{
"href": "file://test/",
"new_value": "12",
"expected": {
"href": "file://test/",
"port": ""
}
},
{
"href": "file://localhost/",
"new_value": "12",
"expected": {
"href": "file:///",
"port": ""
}
},
{
"href": "non-base:value",
"new_value": "12",
"expected": {
"href": "non-base:value",
"port": ""
}
},
{
"href": "sc:///",
"new_value": "12",
"expected": {
"href": "sc:///",
"port": ""
}
},
{
"href": "sc://x/",
"new_value": "12",
"expected": {
"href": "sc://x:12/",
"port": "12"
}
},
{
"href": "javascript://x/",
"new_value": "12",
"expected": {
"href": "javascript://x:12/",
"port": "12"
}
} }
], ],
"pathname": [ "pathname": [
@ -1259,6 +1772,14 @@
"href": "http://example.net/#%c3%89t%C3%A9", "href": "http://example.net/#%c3%89t%C3%A9",
"hash": "#%c3%89t%C3%A9" "hash": "#%c3%89t%C3%A9"
} }
} },
// {
// "href": "javascript:alert(1)",
// "new_value": "castle",
// "expected": {
// "href": "javascript:alert(1)#castle",
// "hash": "#castle"
// }
// }
] ]
} }

2
test/parallel/test-whatwg-url-setters.js

@ -15,7 +15,7 @@ if (!common.hasIntl) {
} }
const request = { const request = {
response: require(path.join(common.fixturesDir, 'url-setter-tests.json')) response: require(path.join(common.fixturesDir, 'url-setter-tests'))
}; };
/* eslint-disable */ /* eslint-disable */

Loading…
Cancel
Save