74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
import { expect, tap } from '../ts/plugins.js';
|
|
import type { ClamAVLogEvent } from '../ts/classes.clamav.manager.js';
|
|
import { setupClamAV, cleanupClamAV, getManager } from './helpers/clamav.helper.js';
|
|
|
|
type ClamAVManager = Awaited<ReturnType<typeof setupClamAV>>;
|
|
|
|
let manager: ClamAVManager;
|
|
|
|
tap.test('setup', async () => {
|
|
manager = await setupClamAV();
|
|
expect(manager).toBeTruthy();
|
|
});
|
|
|
|
tap.test('should have initialized container and receive logs', async () => {
|
|
// Create a promise that resolves when we receive a log
|
|
const logPromise = new Promise<void>((resolve) => {
|
|
// First check if we already have logs
|
|
const existingLogs = manager.getLogs();
|
|
if (existingLogs.length > 0) {
|
|
console.log('[Test] Found existing logs:', existingLogs.map(log => `${log.type}: ${log.message}`).join('\n'));
|
|
resolve();
|
|
return;
|
|
}
|
|
|
|
// If no existing logs, wait for new ones
|
|
const handler = (event: ClamAVLogEvent) => {
|
|
console.log(`[Test] Received log event: ${event.type} - ${event.message}`);
|
|
manager.removeListener('log', handler);
|
|
resolve();
|
|
};
|
|
manager.on('log', handler);
|
|
});
|
|
|
|
// Wait for logs with timeout
|
|
const timeoutPromise = new Promise<void>((_, reject) => {
|
|
setTimeout(() => reject(new Error('Timeout waiting for logs')), 30000);
|
|
});
|
|
|
|
try {
|
|
await Promise.race([logPromise, timeoutPromise]);
|
|
} catch (error) {
|
|
console.error('Error waiting for logs:', error);
|
|
throw error;
|
|
}
|
|
|
|
console.log('Log received check passed');
|
|
|
|
// Verify container is running by checking if we can get database info
|
|
try {
|
|
const dbInfo = await manager.getDatabaseInfo();
|
|
expect(dbInfo).toBeTruthy();
|
|
console.log('Database info check passed');
|
|
} catch (error) {
|
|
console.error('Error getting database info:', error);
|
|
throw new Error('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();
|