import { expect, tap } from '../ts/plugins.js'; import { type ClamAVLogEvent, ClamAVManager } from '../ts/classes.clamav.manager.js'; import { setupClamAV, cleanupClamAV, getManager } from './helpers/clamav.helper.js'; let manager: ClamAVManager; tap.test('setup', async () => { manager = await setupClamAV(); expect(manager).toBeTruthy(); }); tap.test('should have initialized container and receive logs', async () => { let logReceived = false; // Add event listener for logs manager.on('log', (event: ClamAVLogEvent) => { console.log(`[Test] Received log event: ${event.type} - ${event.message}`); logReceived = true; }); // Wait for logs const maxWaitTime = 5000; const startTime = Date.now(); while (!logReceived && Date.now() - startTime < maxWaitTime) { await new Promise(resolve => setTimeout(resolve, 100)); } expect(logReceived).toBeTruthy('No logs received within timeout period'); // Verify container is running by checking if we can get database info try { const dbInfo = await manager.getDatabaseInfo(); expect(dbInfo).toBeTruthy('Container should be running and able to get database info'); } catch (error) { console.error('Error getting database info:', error); expect.fail('Failed to get database info - container may not be fully initialized'); } }); tap.test('should get database info', async () => { const dbInfo = await manager.getDatabaseInfo(); console.log('Database Info:', dbInfo); expect(dbInfo).toBeTruthy(); }); tap.test('should update database', async () => { await manager.updateDatabase(); }); tap.test('cleanup', async () => { await cleanupClamAV(); }); tap.start();