safety-safe
Version:
Firewall cerdas untuk Bot WhatsApp untuk mendeteksi dan memfilter pesan bug/crash/spam (Baileys).
67 lines (59 loc) • 2.63 kB
JavaScript
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');
});
});