/**
* 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('