Browse Source

url: change null password handling

Pulls in new URL parsing tests from w3c web-platform-tests and updates
null password handling.

Refs: e001240685
Refs: https://github.com/whatwg/url/pull/186
PR-URL: https://github.com/nodejs/node/pull/10601
Fixes: https://github.com/nodejs/node/issues/10595
Reviewed-By: Michal Zasso <targos@protonmail.com>
Reviewed-By: Italo A. Casas <me@italoacasas.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
v6
James M Snell 8 years ago
parent
commit
5161b00af5
  1. 3
      lib/internal/url.js
  2. 68
      test/fixtures/url-tests.json

3
lib/internal/url.js

@ -285,7 +285,8 @@ Object.defineProperties(URL.prototype, {
if (ctx.host !== undefined) { if (ctx.host !== undefined) {
ret += '//'; ret += '//';
const has_username = typeof ctx.username === 'string'; const has_username = typeof ctx.username === 'string';
const has_password = typeof ctx.password === 'string'; const has_password = typeof ctx.password === 'string' &&
ctx.password !== '';
if (has_username || has_password) { if (has_username || has_password) {
if (has_username) if (has_username)
ret += ctx.username; ret += ctx.username;

68
test/fixtures/url-tests.json

@ -32,6 +32,66 @@
"search": "?b", "search": "?b",
"hash": "#c" "hash": "#c"
}, },
{
"input": "https://test:@test",
"base": "about:blank",
"href": "https://test@test/",
"origin": "https://test",
"protocol": "https:",
"username": "test",
"password": "",
"host": "test",
"hostname": "test",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "https://:@test",
"base": "about:blank",
"href": "https://test/",
"origin": "https://test",
"protocol": "https:",
"username": "",
"password": "",
"host": "test",
"hostname": "test",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
"input": "non-special://test:@test/x",
"base": "about:blank",
"href": "non-special://test@test/x",
"origin": "null",
"protocol": "non-special:",
"username": "test",
"password": "",
"host": "test",
"hostname": "test",
"port": "",
"pathname": "/x",
"search": "",
"hash": ""
},
{
"input": "non-special://:@test/x",
"base": "about:blank",
"href": "non-special://test/x",
"origin": "null",
"protocol": "non-special:",
"username": "",
"password": "",
"host": "test",
"hostname": "test",
"port": "",
"pathname": "/x",
"search": "",
"hash": ""
},
{ {
"input": "http:foo.com", "input": "http:foo.com",
"base": "http://example.org/foo/bar", "base": "http://example.org/foo/bar",
@ -3098,7 +3158,7 @@
{ {
"input": "http:a:@www.example.com", "input": "http:a:@www.example.com",
"base": "about:blank", "base": "about:blank",
"href": "http://a:@www.example.com/", "href": "http://a@www.example.com/",
"origin": "http://www.example.com", "origin": "http://www.example.com",
"protocol": "http:", "protocol": "http:",
"username": "a", "username": "a",
@ -3113,7 +3173,7 @@
{ {
"input": "http:/a:@www.example.com", "input": "http:/a:@www.example.com",
"base": "about:blank", "base": "about:blank",
"href": "http://a:@www.example.com/", "href": "http://a@www.example.com/",
"origin": "http://www.example.com", "origin": "http://www.example.com",
"protocol": "http:", "protocol": "http:",
"username": "a", "username": "a",
@ -3128,7 +3188,7 @@
{ {
"input": "http://a:@www.example.com", "input": "http://a:@www.example.com",
"base": "about:blank", "base": "about:blank",
"href": "http://a:@www.example.com/", "href": "http://a@www.example.com/",
"origin": "http://www.example.com", "origin": "http://www.example.com",
"protocol": "http:", "protocol": "http:",
"username": "a", "username": "a",
@ -3173,7 +3233,7 @@
{ {
"input": "http://:@www.example.com", "input": "http://:@www.example.com",
"base": "about:blank", "base": "about:blank",
"href": "http://:@www.example.com/", "href": "http://www.example.com/",
"origin": "http://www.example.com", "origin": "http://www.example.com",
"protocol": "http:", "protocol": "http:",
"username": "", "username": "",

Loading…
Cancel
Save