/** * Tests unitaires pour AntiInjectionEngine * Test critique de sécurité - couverture 95% minimum */ const AntiInjectionEngine = require('../../../src/security/AntiInjectionEngine'); describe('AntiInjectionEngine', () => { let antiInjectionEngine; beforeEach(() => { antiInjectionEngine = new AntiInjectionEngine(); }); describe('Initialisation', () => { test('devrait initialiser correctement avec configuration par défaut', () => { expect(antiInjectionEngine).toBeInstanceOf(AntiInjectionEngine); expect(antiInjectionEngine.dangerousPatterns).toHaveLength(expect.any(Number)); expect(antiInjectionEngine.dangerousPatterns.length).toBeGreaterThan(15); expect(antiInjectionEngine.semanticValidationRules).toHaveLength(3); expect(antiInjectionEngine.penaltyScores).toHaveProperty('PROMPT_INJECTION_DETECTED'); }); test('devrait avoir des pénalités configurées correctement', () => { expect(antiInjectionEngine.penaltyScores.PROMPT_INJECTION_DETECTED).toBe(-50); expect(antiInjectionEngine.penaltyScores.SEMANTIC_INCONSISTENCY).toBe(-30); expect(antiInjectionEngine.penaltyScores.UNTRUSTED_SOURCE_HISTORY).toBe(-20); }); }); describe('Layer 1: Content Preprocessing', () => { test('devrait nettoyer HTML malveillant', async () => { const content = { title: 'Test Title', content: 'Content with and ' }; const result = await antiInjectionEngine.layer1_preprocessContent(content); expect(result.cleanedTitle).not.toContain('