Spaces:
Sleeping
Sleeping
File size: 5,904 Bytes
900df0b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | """
اختبارات فاحص البيانات الحساسة
"""
import pytest
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).parent.parent.resolve()
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
class TestSensitiveDataScanner:
"""اختبارات فاحص البيانات الحساسة."""
def test_import(self):
"""اختبار استيراد الفاحص."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
assert SensitiveDataScanner is not None
def test_initialization(self):
"""اختبار التهيئة."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner()
assert scanner is not None
def test_scan_clean_text(self):
"""اختبار فحص نص نظيف."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("Hello World, this is a clean text.")
assert result["sensitive_data_found"] is False
assert result["total_entities"] == 0
assert result["risk_level"] == "none"
def test_scan_email(self):
"""اختبار كشف البريد الإلكتروني."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("Contact me at test@example.com please.")
assert result["sensitive_data_found"] is True
assert result["total_entities"] >= 1
entity_types = [e["type"] for e in result["entities"]]
assert "EMAIL_ADDRESS" in entity_types
def test_scan_credit_card(self):
"""اختبار كشف بطاقة الائتمانية."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("Card: 4111-1111-1111-1111")
assert result["sensitive_data_found"] is True
def test_scan_phone(self):
"""اختبار كشف رقم الهاتف."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("Call me at +1-234-567-8900")
assert result["sensitive_data_found"] is True
def test_scan_ip_address(self):
"""اختبار كشف عنوان IP."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("Server at 192.168.1.1")
assert result["sensitive_data_found"] is True
def test_scan_api_key(self):
"""اختبار كشف مفتاح API."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text('api_key = "sk-1234567890abcdefghij"')
assert result["sensitive_data_found"] is True
def test_scan_multiple_entities(self, sensitive_text):
"""اختبار كشف كيانات متعددة."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text(sensitive_text)
assert result["sensitive_data_found"] is True
assert result["total_entities"] >= 3
def test_risk_level_critical(self):
"""اختبار مستوى خطورة حرج."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("-----BEGIN RSA PRIVATE KEY-----")
assert result["risk_level"] in ("critical", "high")
def test_anonymize_text(self):
"""اختبار إخفاء البيانات الحساسة."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
text = "Email: test@example.com"
anonymized = scanner.anonymize_text(text, mask_char="[HIDDEN]")
assert "test@example.com" not in anonymized
assert "[HIDDEN]" in anonymized
def test_anonymize_empty(self):
"""اختبار إخفاء نص فارغ."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
assert scanner.anonymize_text("") == ""
def test_add_custom_pattern(self):
"""اختبار إضافة نمط مخصص."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
scanner.add_custom_pattern(
name="SYRIAN_PHONE",
label="هاتف سوري",
regex=r"09\d{8}",
risk="medium",
)
result = scanner.scan_text("Call 0912345678")
assert result["sensitive_data_found"] is True
def test_is_available(self):
"""اختبار فحص التوفر."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner()
available = scanner.is_available()
assert isinstance(available, dict)
assert "presidio" in available
assert "regex" in available
def test_scan_empty_text(self):
"""اختبار فحص نص فارغ."""
from modules.security.sensitive_data_scanner import SensitiveDataScanner
scanner = SensitiveDataScanner(use_presidio=False)
result = scanner.scan_text("")
assert result["sensitive_data_found"] is False
|