import { tap, expect } from '@git.zone/tstest/tapbundle'; import { SmartProxy } from '../ts/index.js'; import * as net from 'net'; tap.test('basic forward action should work correctly', async (t) => { t.timeout(10000); // Create a simple echo server as the target const targetServer = net.createServer((socket) => { console.log('Target server: Client connected'); socket.write('Hello from target server\n'); socket.on('data', (data) => { console.log(`Target server received: ${data.toString().trim()}`); socket.write(`Echo: ${data}`); }); socket.on('error', (err) => { console.error('Target server socket error:', err); }); }); await new Promise((resolve) => { targetServer.listen(7777, '127.0.0.1', () => { console.log('Target server listening on port 7777'); resolve(); }); }); // Create SmartProxy with forward route const proxy = new SmartProxy({ enableDetailedLogging: true, routes: [{ name: 'test-forward', match: { ports: 7778 }, action: { type: 'forward', target: { host: '127.0.0.1', port: 7777 } } }] }); await proxy.start(); console.log('Proxy started on port 7778'); // Test the connection const client = new net.Socket(); await new Promise((resolve, reject) => { let received = ''; client.on('data', (data) => { received += data.toString(); console.log('Client received:', data.toString().trim()); if (received.includes('Hello from target server')) { // Send test data client.write('Test message\n'); } else if (received.includes('Echo: Test message')) { // Test successful client.end(); resolve(); } }); client.on('error', reject); client.connect(7778, '127.0.0.1', () => { console.log('Client connected to proxy'); }); // Add timeout setTimeout(() => { reject(new Error('Test timeout - no response received')); }, 5000); }); await proxy.stop(); targetServer.close(); console.log('Test completed successfully'); }); tap.start();