UNPKG

safety-safe

Version:

Firewall cerdas untuk Bot WhatsApp untuk mendeteksi dan memfilter pesan bug/crash/spam (Baileys).

67 lines (59 loc) 2.63 kB
import { analyzeMessage } from '../src/index.js'; describe('Safety-Safe v3.0.0', () => { test('Should return not malicious for a normal message', () => { const normalMessage = { conversation: 'Halo, apa kabar?' }; const result = analyzeMessage(normalMessage); expect(result.isMalicious).toBe(false); }); test('Should detect impossible document fileLength', () => { const maliciousMessage = { interactiveMessage: { header: { documentMessage: { fileLength: "9999999999999" } } } }; const result = analyzeMessage(maliciousMessage); expect(result.isMalicious).toBe(true); expect(result.reason).toBe('Impossible Document fileLength'); expect(result.severity).toBe('CRITICAL'); }); test('Should detect invalid latitude value', () => { const maliciousMessage = { interactiveMessage: { header: { liveLocationMessage: { degreesLatitude: 250208 } } } }; const result = analyzeMessage(maliciousMessage); expect(result.isMalicious).toBe(true); expect(result.reason).toBe('Invalid Latitude Value'); expect(result.severity).toBe('CRITICAL'); }); test('Should detect character flood in interactive message body', () => { const maliciousMessage = { interactiveMessage: { body: { text: "ꦽ".repeat(25000) } } }; const result = analyzeMessage(maliciousMessage); expect(result.isMalicious).toBe(true); expect(result.reason).toContain('Character Flood Detected'); expect(result.severity).toBe('HIGH'); }); test('Should detect massive mention count', () => { const jids = Array(150).fill('123@s.whatsapp.net'); const maliciousMessage = { extendedTextMessage: { contextInfo: { mentionedJid: jids } } }; const result = analyzeMessage(maliciousMessage); expect(result.isMalicious).toBe(true); expect(result.reason).toContain('Massive Mention Count'); }); test('Should respect custom configuration options', () => { const message = { conversation: 'a'.repeat(50) }; const defaultResult = analyzeMessage(message); expect(defaultResult.isMalicious).toBe(false); const customOptions = { maxTextLength: 40 }; const customResult = analyzeMessage(message, customOptions); expect(customResult.isMalicious).toBe(true); expect(customResult.reason).toContain('Excessive Content Length'); }); });