11cb0ef41Sopenharmony_ci'use strict'; 21cb0ef41Sopenharmony_cirequire('../common'); 31cb0ef41Sopenharmony_ciconst assert = require('assert'); 41cb0ef41Sopenharmony_ciconst { urlToHttpOptions } = require('url'); 51cb0ef41Sopenharmony_ci 61cb0ef41Sopenharmony_ci// Test urlToHttpOptions 71cb0ef41Sopenharmony_ciconst urlObj = new URL('http://user:pass@foo.bar.com:21/aaa/zzz?l=24#test'); 81cb0ef41Sopenharmony_ciconst opts = urlToHttpOptions(urlObj); 91cb0ef41Sopenharmony_ciassert.strictEqual(opts instanceof URL, false); 101cb0ef41Sopenharmony_ciassert.strictEqual(opts.protocol, 'http:'); 111cb0ef41Sopenharmony_ciassert.strictEqual(opts.auth, 'user:pass'); 121cb0ef41Sopenharmony_ciassert.strictEqual(opts.hostname, 'foo.bar.com'); 131cb0ef41Sopenharmony_ciassert.strictEqual(opts.port, 21); 141cb0ef41Sopenharmony_ciassert.strictEqual(opts.path, '/aaa/zzz?l=24'); 151cb0ef41Sopenharmony_ciassert.strictEqual(opts.pathname, '/aaa/zzz'); 161cb0ef41Sopenharmony_ciassert.strictEqual(opts.search, '?l=24'); 171cb0ef41Sopenharmony_ciassert.strictEqual(opts.hash, '#test'); 181cb0ef41Sopenharmony_ci 191cb0ef41Sopenharmony_ciconst { hostname } = urlToHttpOptions(new URL('http://[::1]:21')); 201cb0ef41Sopenharmony_ciassert.strictEqual(hostname, '::1'); 211cb0ef41Sopenharmony_ci 221cb0ef41Sopenharmony_ci// If a WHATWG URL object is copied, it is possible that the resulting copy 231cb0ef41Sopenharmony_ci// contains the Symbols that Node uses for brand checking, but not the data 241cb0ef41Sopenharmony_ci// properties, which are getters. Verify that urlToHttpOptions() can handle 251cb0ef41Sopenharmony_ci// such a case. 261cb0ef41Sopenharmony_ciconst copiedUrlObj = { ...urlObj }; 271cb0ef41Sopenharmony_ciconst copiedOpts = urlToHttpOptions(copiedUrlObj); 281cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts instanceof URL, false); 291cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.protocol, undefined); 301cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.auth, undefined); 311cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.hostname, undefined); 321cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.port, NaN); 331cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.path, ''); 341cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.pathname, undefined); 351cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.search, undefined); 361cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.hash, undefined); 371cb0ef41Sopenharmony_ciassert.strictEqual(copiedOpts.href, undefined); 38