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