fix(connection-manager): set default maxConnections to 10000 if not specified
This commit is contained in:
		| @@ -1,207 +0,0 @@ | ||||
| import { expect, tap } from '@git.zone/tstest/tapbundle'; | ||||
| import { | ||||
|   EventSystem, | ||||
|   ProxyEvents, | ||||
|   ComponentType | ||||
| } from '../../../ts/core/utils/event-system.js'; | ||||
|  | ||||
| // Setup function for creating a new event system | ||||
| function setupEventSystem(): { eventSystem: EventSystem, receivedEvents: any[] } { | ||||
|   const eventSystem = new EventSystem(ComponentType.SMART_PROXY, 'test-id'); | ||||
|   const receivedEvents: any[] = []; | ||||
|   return { eventSystem, receivedEvents }; | ||||
| } | ||||
|  | ||||
| tap.test('Event System - certificate events with correct structure', async () => { | ||||
|   const { eventSystem, receivedEvents } = setupEventSystem(); | ||||
|    | ||||
|   // Set up listeners | ||||
|   eventSystem.on(ProxyEvents.CERTIFICATE_ISSUED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'issued', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   eventSystem.on(ProxyEvents.CERTIFICATE_RENEWED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'renewed', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   // Emit events | ||||
|   eventSystem.emitCertificateIssued({ | ||||
|     domain: 'example.com', | ||||
|     certificate: 'cert-content', | ||||
|     privateKey: 'key-content', | ||||
|     expiryDate: new Date('2025-01-01') | ||||
|   }); | ||||
|    | ||||
|   eventSystem.emitCertificateRenewed({ | ||||
|     domain: 'example.com', | ||||
|     certificate: 'new-cert-content', | ||||
|     privateKey: 'new-key-content', | ||||
|     expiryDate: new Date('2026-01-01'), | ||||
|     isRenewal: true | ||||
|   }); | ||||
|    | ||||
|   // Verify events | ||||
|   expect(receivedEvents.length).toEqual(2); | ||||
|    | ||||
|   // Check issuance event | ||||
|   expect(receivedEvents[0].type).toEqual('issued'); | ||||
|   expect(receivedEvents[0].data.domain).toEqual('example.com'); | ||||
|   expect(receivedEvents[0].data.certificate).toEqual('cert-content'); | ||||
|   expect(receivedEvents[0].data.componentType).toEqual(ComponentType.SMART_PROXY); | ||||
|   expect(receivedEvents[0].data.componentId).toEqual('test-id'); | ||||
|   expect(typeof receivedEvents[0].data.timestamp).toEqual('number'); | ||||
|    | ||||
|   // Check renewal event | ||||
|   expect(receivedEvents[1].type).toEqual('renewed'); | ||||
|   expect(receivedEvents[1].data.domain).toEqual('example.com'); | ||||
|   expect(receivedEvents[1].data.isRenewal).toEqual(true); | ||||
|   expect(receivedEvents[1].data.expiryDate).toEqual(new Date('2026-01-01')); | ||||
| }); | ||||
|  | ||||
| tap.test('Event System - component lifecycle events', async () => { | ||||
|   const { eventSystem, receivedEvents } = setupEventSystem(); | ||||
|    | ||||
|   // Set up listeners | ||||
|   eventSystem.on(ProxyEvents.COMPONENT_STARTED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'started', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   eventSystem.on(ProxyEvents.COMPONENT_STOPPED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'stopped', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   // Emit events | ||||
|   eventSystem.emitComponentStarted('TestComponent', '1.0.0'); | ||||
|   eventSystem.emitComponentStopped('TestComponent'); | ||||
|    | ||||
|   // Verify events | ||||
|   expect(receivedEvents.length).toEqual(2); | ||||
|    | ||||
|   // Check started event | ||||
|   expect(receivedEvents[0].type).toEqual('started'); | ||||
|   expect(receivedEvents[0].data.name).toEqual('TestComponent'); | ||||
|   expect(receivedEvents[0].data.version).toEqual('1.0.0'); | ||||
|    | ||||
|   // Check stopped event | ||||
|   expect(receivedEvents[1].type).toEqual('stopped'); | ||||
|   expect(receivedEvents[1].data.name).toEqual('TestComponent'); | ||||
| }); | ||||
|  | ||||
| tap.test('Event System - connection events', async () => { | ||||
|   const { eventSystem, receivedEvents } = setupEventSystem(); | ||||
|    | ||||
|   // Set up listeners | ||||
|   eventSystem.on(ProxyEvents.CONNECTION_ESTABLISHED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'established', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   eventSystem.on(ProxyEvents.CONNECTION_CLOSED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'closed', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   // Emit events | ||||
|   eventSystem.emitConnectionEstablished({ | ||||
|     connectionId: 'conn-123', | ||||
|     clientIp: '192.168.1.1', | ||||
|     port: 443, | ||||
|     isTls: true, | ||||
|     domain: 'example.com' | ||||
|   }); | ||||
|    | ||||
|   eventSystem.emitConnectionClosed({ | ||||
|     connectionId: 'conn-123', | ||||
|     clientIp: '192.168.1.1', | ||||
|     port: 443 | ||||
|   }); | ||||
|    | ||||
|   // Verify events | ||||
|   expect(receivedEvents.length).toEqual(2); | ||||
|    | ||||
|   // Check established event | ||||
|   expect(receivedEvents[0].type).toEqual('established'); | ||||
|   expect(receivedEvents[0].data.connectionId).toEqual('conn-123'); | ||||
|   expect(receivedEvents[0].data.clientIp).toEqual('192.168.1.1'); | ||||
|   expect(receivedEvents[0].data.port).toEqual(443); | ||||
|   expect(receivedEvents[0].data.isTls).toEqual(true); | ||||
|    | ||||
|   // Check closed event | ||||
|   expect(receivedEvents[1].type).toEqual('closed'); | ||||
|   expect(receivedEvents[1].data.connectionId).toEqual('conn-123'); | ||||
| }); | ||||
|  | ||||
| tap.test('Event System - once and off subscription methods', async () => { | ||||
|   const { eventSystem, receivedEvents } = setupEventSystem(); | ||||
|    | ||||
|   // Set up a listener that should fire only once | ||||
|   eventSystem.once(ProxyEvents.CONNECTION_ESTABLISHED, (data) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'once', | ||||
|       data | ||||
|     }); | ||||
|   }); | ||||
|    | ||||
|   // Set up a persistent listener | ||||
|   const persistentHandler = (data: any) => { | ||||
|     receivedEvents.push({ | ||||
|       type: 'persistent', | ||||
|       data | ||||
|     }); | ||||
|   }; | ||||
|    | ||||
|   eventSystem.on(ProxyEvents.CONNECTION_ESTABLISHED, persistentHandler); | ||||
|    | ||||
|   // First event should trigger both listeners | ||||
|   eventSystem.emitConnectionEstablished({ | ||||
|     connectionId: 'conn-1', | ||||
|     clientIp: '192.168.1.1', | ||||
|     port: 443 | ||||
|   }); | ||||
|    | ||||
|   // Second event should only trigger the persistent listener | ||||
|   eventSystem.emitConnectionEstablished({ | ||||
|     connectionId: 'conn-2', | ||||
|     clientIp: '192.168.1.1', | ||||
|     port: 443 | ||||
|   }); | ||||
|    | ||||
|   // Unsubscribe the persistent listener | ||||
|   eventSystem.off(ProxyEvents.CONNECTION_ESTABLISHED, persistentHandler); | ||||
|    | ||||
|   // Third event should not trigger any listeners | ||||
|   eventSystem.emitConnectionEstablished({ | ||||
|     connectionId: 'conn-3', | ||||
|     clientIp: '192.168.1.1', | ||||
|     port: 443 | ||||
|   }); | ||||
|    | ||||
|   // Verify events | ||||
|   expect(receivedEvents.length).toEqual(3); | ||||
|   expect(receivedEvents[0].type).toEqual('once'); | ||||
|   expect(receivedEvents[0].data.connectionId).toEqual('conn-1'); | ||||
|    | ||||
|   expect(receivedEvents[1].type).toEqual('persistent'); | ||||
|   expect(receivedEvents[1].data.connectionId).toEqual('conn-1'); | ||||
|    | ||||
|   expect(receivedEvents[2].type).toEqual('persistent'); | ||||
|   expect(receivedEvents[2].data.connectionId).toEqual('conn-2'); | ||||
| }); | ||||
|  | ||||
| export default tap.start(); | ||||
| @@ -34,7 +34,7 @@ export class ConnectionManager extends LifecycleComponent { | ||||
|     super(); | ||||
|      | ||||
|     // Set reasonable defaults for connection limits | ||||
|     this.maxConnections = settings.defaults.security.maxConnections  | ||||
|     this.maxConnections = settings.defaults?.security?.maxConnections || 10000;  | ||||
|      | ||||
|     // Start inactivity check timer if not disabled | ||||
|     if (!settings.disableInactivityCheck) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user