// deno-fmt-ignore-file // deno-lint-ignore-file // Copyright Joyent and Node contributors. All rights reserved. MIT license. // Taken from Node 20.11.1 // This file is automatically generated by `tests/node_compat/runner/setup.ts`. Do not modify this file manually. 'use strict'; const common = require('../common'); const assert = require('assert'); const http = require('http'); const baseOptions = { method: 'GET', port: undefined, host: common.localhostIPv4, }; const failingAgentOptions = [ true, 'agent', {}, 1, () => null, Symbol(), ]; const acceptableAgentOptions = [ false, undefined, null, new http.Agent(), ]; const server = http.createServer((req, res) => { res.end('hello'); }); let numberOfResponses = 0; function createRequest(agent) { const options = Object.assign(baseOptions, { agent }); const request = http.request(options); request.end(); request.on('response', common.mustCall(() => { numberOfResponses++; if (numberOfResponses === acceptableAgentOptions.length) { server.close(); } })); } server.listen(0, baseOptions.host, common.mustCall(function() { baseOptions.port = this.address().port; failingAgentOptions.forEach((agent) => { assert.throws( () => createRequest(agent), { code: 'ERR_INVALID_ARG_TYPE', name: 'TypeError', message: 'The "options.agent" property must be one of Agent-like ' + 'Object, undefined, or false.' + common.invalidArgTypeHelper(agent) } ); }); acceptableAgentOptions.forEach((agent) => { createRequest(agent); }); })); process.on('exit', () => { assert.strictEqual(numberOfResponses, acceptableAgentOptions.length); });