Skip to content

Commit

Permalink
url: TupleOrigin#toString use unicode by default
Browse files Browse the repository at this point in the history
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: nodejs#10552
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
joyeecheung authored and italoacasas committed Jan 18, 2017
1 parent 9ec91b8 commit 09418b0
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 38 deletions.
5 changes: 3 additions & 2 deletions lib/internal/url.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ class TupleOrigin {
return this[kDomain] || this[kHost];
}

toString(unicode = false) {
// https://url.spec.whatwg.org/#dom-url-origin
toString(unicode = true) {
var result = this[kScheme];
result += '://';
result += unicode ? domainToUnicode(this[kHost]) : this[kHost];
Expand Down Expand Up @@ -325,7 +326,7 @@ Object.defineProperties(URL.prototype, {
enumerable: true,
configurable: true,
get() {
return originFor(this).toString(true);
return originFor(this).toString();
}
},
protocol: {
Expand Down
19 changes: 0 additions & 19 deletions test/parallel/test-whatwg-url-origin-for.js

This file was deleted.

39 changes: 22 additions & 17 deletions test/parallel/test-whatwg-url-parsing.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,30 @@ const path = require('path');
const assert = require('assert');
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) {
if (typeof test === 'string')
continue;

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 {
assert.doesNotThrow(() => {
const url = new URL(test.input, test.base);
assert.strictEqual(url.href, test.href);
});
const url = new URL(test.input, test.base);
verifyURL(url, test);
}
}

Expand Down Expand Up @@ -115,18 +128,10 @@ const additional_tests = [
}
];

additional_tests.forEach((test) => {
const u = new URL(test.url);
if (test.protocol) assert.strictEqual(test.protocol, u.protocol);
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);
});
for (const test of additional_tests) {
const url = new URL(test.url);
verifyURL(url, test);
}

// test inspect
const allTests = additional_tests.slice();
Expand Down

0 comments on commit 09418b0

Please sign in to comment.