62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
import os
|
|
import tempfile
|
|
import pytest
|
|
from datetime import datetime
|
|
from ayn_antivirus.core.engine import (
|
|
ThreatType, Severity, ScanType, ThreatInfo,
|
|
ScanResult, FileScanResult, ScanEngine
|
|
)
|
|
from ayn_antivirus.core.event_bus import EventBus, EventType
|
|
|
|
def test_threat_type_enum():
|
|
assert ThreatType.VIRUS.value is not None
|
|
assert ThreatType.MINER.value is not None
|
|
|
|
def test_severity_enum():
|
|
assert Severity.CRITICAL.value is not None
|
|
assert Severity.LOW.value is not None
|
|
|
|
def test_threat_info_creation():
|
|
threat = ThreatInfo(
|
|
path="/tmp/evil.sh",
|
|
threat_name="TestMalware",
|
|
threat_type=ThreatType.MALWARE,
|
|
severity=Severity.HIGH,
|
|
detector_name="test",
|
|
details="Test detection",
|
|
file_hash="abc123"
|
|
)
|
|
assert threat.path == "/tmp/evil.sh"
|
|
assert threat.threat_type == ThreatType.MALWARE
|
|
|
|
def test_scan_result_creation():
|
|
result = ScanResult(
|
|
scan_id="test-123",
|
|
start_time=datetime.now(),
|
|
end_time=datetime.now(),
|
|
files_scanned=100,
|
|
files_skipped=5,
|
|
threats=[],
|
|
scan_path="/tmp",
|
|
scan_type=ScanType.QUICK
|
|
)
|
|
assert result.files_scanned == 100
|
|
assert len(result.threats) == 0
|
|
|
|
def test_event_bus():
|
|
bus = EventBus()
|
|
received = []
|
|
bus.subscribe(EventType.THREAT_FOUND, lambda et, data: received.append(data))
|
|
bus.publish(EventType.THREAT_FOUND, {"test": True})
|
|
assert len(received) == 1
|
|
assert received[0]["test"] == True
|
|
|
|
def test_scan_clean_file(tmp_path):
|
|
clean_file = tmp_path / "clean.txt"
|
|
clean_file.write_text("This is a perfectly normal text file with nothing suspicious.")
|
|
from ayn_antivirus.config import Config
|
|
config = Config()
|
|
engine = ScanEngine(config)
|
|
result = engine.scan_file(str(clean_file))
|
|
assert isinstance(result, FileScanResult)
|