Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 uid=33(www-data) gid=33(www-data) groups=33(www-data) Safe-mode: OFF (not secure) /var/www/html/node-red/node_modules/hpagent/test/ drwxr-xr-x | |
| Viewing file: Select action/file-type: 'use strict'
const https = require('https')
const test = require('ava')
const { createSecureServer, createProxy } = require('./utils')
const { HttpsProxyAgent } = require('../')
function request (opts) {
return new Promise((resolve, reject) => {
const req = https.request(opts, resolve)
req.on('error', reject)
req.end(opts.body)
})
}
test('Basic', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
const response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent: new HttpsProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://${proxy.address().address}:${proxy.address().port}`
})
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
test('Connection header (keep-alive)', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
proxy.authenticate = function (req, fn) {
t.is(req.headers.connection, 'keep-alive')
fn(null, true)
}
const response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent: new HttpsProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://${proxy.address().address}:${proxy.address().port}`
})
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
test('Connection header (close)', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
proxy.authenticate = function (req, fn) {
t.is(req.headers.connection, 'close')
fn(null, true)
}
const response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent: new HttpsProxyAgent({
keepAlive: false,
keepAliveMsecs: 1000,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://${proxy.address().address}:${proxy.address().port}`
})
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
test('Proxy authentication (empty)', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
proxy.authenticate = function (req, fn) {
fn(null, req.headers['proxy-authorization'] === undefined)
}
const response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent: new HttpsProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://${proxy.address().address}:${proxy.address().port}`
})
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
test('Proxy authentication', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
proxy.authenticate = function (req, fn) {
fn(null, req.headers['proxy-authorization'] === `Basic ${Buffer.from('hello:world').toString('base64')}`)
}
const response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent: new HttpsProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://hello:world@${proxy.address().address}:${proxy.address().port}`
})
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
test('Configure the agent to reuse sockets', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
let count = 0
proxy.on('connection', () => {
count += 1
t.is(count, 1)
})
const agent = new HttpsProxyAgent({
keepAlive: true,
keepAliveMsecs: 1000,
maxSockets: 256,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://${proxy.address().address}:${proxy.address().port}`
})
let response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent
})
body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
test('Configure the agent to NOT reuse sockets', async t => {
const server = await createSecureServer()
const proxy = await createProxy()
server.on('request', (req, res) => res.end('ok'))
const ports = []
proxy.on('connection', socket => {
t.false(ports.includes(socket.remotePort))
ports.push(socket.remotePort)
})
const agent = new HttpsProxyAgent({
keepAlive: false,
keepAliveMsecs: 1000,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
proxy: `http://${proxy.address().address}:${proxy.address().port}`
})
let response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent
})
let body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
response = await request({
method: 'GET',
hostname: server.address().address,
port: server.address().port,
path: '/',
agent
})
body = ''
response.setEncoding('utf8')
for await (const chunk of response) {
body += chunk
}
t.is(body, 'ok')
t.is(response.statusCode, 200)
server.close()
proxy.close()
})
|
:: Command execute :: | |
--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0045 ]-- |