summaryrefslogtreecommitdiff
path: root/test/parallel/test-whatwg-url-custom-properties.js
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-02-20 20:47:25 -0500
committercjihrig <cjihrig@gmail.com>2019-02-26 16:04:03 -0500
commit4900863043406528d7cd37e8233fe449fa76f9bf (patch)
tree2098899f0cc379ef6e1709d155c5b98f0baa3435 /test/parallel/test-whatwg-url-custom-properties.js
parentccd6b12fec944c0e77fc60ffd8cea9781d850a2e (diff)
downloadandroid-node-v8-4900863043406528d7cd37e8233fe449fa76f9bf.tar.gz
android-node-v8-4900863043406528d7cd37e8233fe449fa76f9bf.tar.bz2
android-node-v8-4900863043406528d7cd37e8233fe449fa76f9bf.zip
url: handle quasi-WHATWG URLs in urlToOptions()
PR-URL: https://github.com/nodejs/node/pull/26226 Refs: https://github.com/nodejs/node/issues/26198 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'test/parallel/test-whatwg-url-custom-properties.js')
-rw-r--r--test/parallel/test-whatwg-url-custom-properties.js21
1 files changed, 19 insertions, 2 deletions
diff --git a/test/parallel/test-whatwg-url-custom-properties.js b/test/parallel/test-whatwg-url-custom-properties.js
index 035cc1eae2..ee51efd539 100644
--- a/test/parallel/test-whatwg-url-custom-properties.js
+++ b/test/parallel/test-whatwg-url-custom-properties.js
@@ -133,8 +133,8 @@ assert.strictEqual(url.searchParams, oldParams);
// Test urlToOptions
{
- const opts =
- urlToOptions(new URL('http://user:pass@foo.bar.com:21/aaa/zzz?l=24#test'));
+ const urlObj = new URL('http://user:pass@foo.bar.com:21/aaa/zzz?l=24#test');
+ const opts = urlToOptions(urlObj);
assert.strictEqual(opts instanceof URL, false);
assert.strictEqual(opts.protocol, 'http:');
assert.strictEqual(opts.auth, 'user:pass');
@@ -147,6 +147,23 @@ assert.strictEqual(url.searchParams, oldParams);
const { hostname } = urlToOptions(new URL('http://[::1]:21'));
assert.strictEqual(hostname, '::1');
+
+ // If a WHATWG URL object is copied, it is possible that the resulting copy
+ // contains the Symbols that Node uses for brand checking, but not the data
+ // properties, which are getters. Verify that urlToOptions() can handle such
+ // a case.
+ const copiedUrlObj = Object.assign({}, urlObj);
+ const copiedOpts = urlToOptions(copiedUrlObj);
+ assert.strictEqual(copiedOpts instanceof URL, false);
+ assert.strictEqual(copiedOpts.protocol, undefined);
+ assert.strictEqual(copiedOpts.auth, undefined);
+ assert.strictEqual(copiedOpts.hostname, undefined);
+ assert.strictEqual(copiedOpts.port, NaN);
+ assert.strictEqual(copiedOpts.path, '');
+ assert.strictEqual(copiedOpts.pathname, undefined);
+ assert.strictEqual(copiedOpts.search, undefined);
+ assert.strictEqual(copiedOpts.hash, undefined);
+ assert.strictEqual(copiedOpts.href, undefined);
}
// Test special origins