url: TupleOrigin#toString use unicode by default
See: https://url.spec.whatwg.org/#dom-url-origin Also moves the tests for origins to the parsing tests since now URL#origin matches the test cases by default. PR-URL: https://github.com/nodejs/node/pull/10552 Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
ac90d298d4
commit
2177a38178
@ -66,7 +66,8 @@ class TupleOrigin {
|
|||||||
return this[kDomain] || this[kHost];
|
return this[kDomain] || this[kHost];
|
||||||
}
|
}
|
||||||
|
|
||||||
toString(unicode = false) {
|
// https://url.spec.whatwg.org/#dom-url-origin
|
||||||
|
toString(unicode = true) {
|
||||||
var result = this[kScheme];
|
var result = this[kScheme];
|
||||||
result += '://';
|
result += '://';
|
||||||
result += unicode ? domainToUnicode(this[kHost]) : this[kHost];
|
result += unicode ? domainToUnicode(this[kHost]) : this[kHost];
|
||||||
@ -321,7 +322,7 @@ Object.defineProperties(URL.prototype, {
|
|||||||
enumerable: true,
|
enumerable: true,
|
||||||
configurable: true,
|
configurable: true,
|
||||||
get() {
|
get() {
|
||||||
return originFor(this).toString(true);
|
return originFor(this).toString();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
protocol: {
|
protocol: {
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
'use strict';
|
|
||||||
|
|
||||||
const common = require('../common');
|
|
||||||
|
|
||||||
const originFor = require('url').originFor;
|
|
||||||
const path = require('path');
|
|
||||||
const assert = require('assert');
|
|
||||||
const tests = require(path.join(common.fixturesDir, 'url-tests.json'));
|
|
||||||
|
|
||||||
for (const test of tests) {
|
|
||||||
if (typeof test === 'string')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (test.origin) {
|
|
||||||
const origin = originFor(test.input, test.base);
|
|
||||||
// Pass true to origin.toString() to enable unicode serialization.
|
|
||||||
assert.strictEqual(origin.toString(true), test.origin);
|
|
||||||
}
|
|
||||||
}
|
|
@ -13,17 +13,30 @@ const path = require('path');
|
|||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
const tests = require(path.join(common.fixturesDir, 'url-tests.json'));
|
const tests = require(path.join(common.fixturesDir, 'url-tests.json'));
|
||||||
|
|
||||||
|
function verifyURL(url, test) {
|
||||||
|
if (test.href) assert.strictEqual(url.href, test.href);
|
||||||
|
if (test.origin) assert.strictEqual(url.origin, test.origin);
|
||||||
|
if (test.protocol) assert.strictEqual(url.protocol, test.protocol);
|
||||||
|
if (test.username) assert.strictEqual(url.username, test.username);
|
||||||
|
if (test.password) assert.strictEqual(url.password, test.password);
|
||||||
|
if (test.hostname) assert.strictEqual(url.hostname, test.hostname);
|
||||||
|
if (test.host) assert.strictEqual(url.host, test.host);
|
||||||
|
if (test.port !== undefined) assert.strictEqual(url.port, test.port);
|
||||||
|
if (test.pathname) assert.strictEqual(url.pathname, test.pathname);
|
||||||
|
if (test.search) assert.strictEqual(url.search, test.search);
|
||||||
|
if (test.hash) assert.strictEqual(url.hash, test.hash);
|
||||||
|
}
|
||||||
|
|
||||||
for (const test of tests) {
|
for (const test of tests) {
|
||||||
if (typeof test === 'string')
|
if (typeof test === 'string')
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (test.failure) {
|
if (test.failure) {
|
||||||
assert.throws(() => new URL(test.input, test.base), /Invalid URL/);
|
assert.throws(() => new URL(test.input, test.base),
|
||||||
|
/^TypeError: Invalid URL$/);
|
||||||
} else {
|
} else {
|
||||||
assert.doesNotThrow(() => {
|
const url = new URL(test.input, test.base);
|
||||||
const url = new URL(test.input, test.base);
|
verifyURL(url, test);
|
||||||
assert.strictEqual(url.href, test.href);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,18 +128,10 @@ const additional_tests = [
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
additional_tests.forEach((test) => {
|
for (const test of additional_tests) {
|
||||||
const u = new URL(test.url);
|
const url = new URL(test.url);
|
||||||
if (test.protocol) assert.strictEqual(test.protocol, u.protocol);
|
verifyURL(url, test);
|
||||||
if (test.username) assert.strictEqual(test.username, u.username);
|
}
|
||||||
if (test.password) assert.strictEqual(test.password, u.password);
|
|
||||||
if (test.hostname) assert.strictEqual(test.hostname, u.hostname);
|
|
||||||
if (test.host) assert.strictEqual(test.host, u.host);
|
|
||||||
if (test.port !== undefined) assert.strictEqual(test.port, u.port);
|
|
||||||
if (test.pathname) assert.strictEqual(test.pathname, u.pathname);
|
|
||||||
if (test.search) assert.strictEqual(test.search, u.search);
|
|
||||||
if (test.hash) assert.strictEqual(test.hash, u.hash);
|
|
||||||
});
|
|
||||||
|
|
||||||
// test inspect
|
// test inspect
|
||||||
const allTests = additional_tests.slice();
|
const allTests = additional_tests.slice();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user