88 lines
1.9 KiB
Python
88 lines
1.9 KiB
Python
"""
|
|
©AngelaMos | 2026
|
|
conftest.py
|
|
"""
|
|
|
|
|
|
import tempfile
|
|
from pathlib import Path
|
|
from collections.abc import Generator
|
|
|
|
import pytest
|
|
|
|
from dlp_scanner.config import ScanConfig
|
|
from dlp_scanner.models import Finding, Location
|
|
|
|
|
|
@pytest.fixture
|
|
def default_config() -> ScanConfig:
|
|
"""
|
|
Provide a default ScanConfig instance
|
|
"""
|
|
return ScanConfig()
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_location() -> Location:
|
|
"""
|
|
Provide a sample file location
|
|
"""
|
|
return Location(
|
|
source_type = "file",
|
|
uri = "test/employees.csv",
|
|
line = 42,
|
|
column = 15,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def sample_finding(sample_location: Location) -> Finding:
|
|
"""
|
|
Provide a sample finding
|
|
"""
|
|
return Finding(
|
|
rule_id = "PII_SSN",
|
|
rule_name = "US Social Security Number",
|
|
severity = "critical",
|
|
confidence = 0.95,
|
|
location = sample_location,
|
|
redacted_snippet = "...SSN: ***-**-6789...",
|
|
compliance_frameworks = ["HIPAA",
|
|
"CCPA"],
|
|
remediation = "Encrypt or remove SSN data",
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def temp_dir() -> Generator[Path, None, None]:
|
|
"""
|
|
Provide a temporary directory for test files
|
|
"""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
yield Path(tmpdir)
|
|
|
|
|
|
@pytest.fixture
|
|
def temp_dir_with_pii(
|
|
temp_dir: Path,
|
|
) -> Path:
|
|
"""
|
|
Provide a temp directory containing files with known PII
|
|
"""
|
|
csv_path = temp_dir / "employees.csv"
|
|
csv_path.write_text(
|
|
"name,ssn,email\n"
|
|
"John Doe,123-45-6789,john@example.com\n"
|
|
"Jane Smith,987-65-4321,jane@example.com\n"
|
|
)
|
|
|
|
txt_path = temp_dir / "clean.txt"
|
|
txt_path.write_text("No sensitive data here at all.")
|
|
|
|
json_path = temp_dir / "config.json"
|
|
json_path.write_text(
|
|
'{"api_key": "sk_live_abc123def456ghi789jkl012mno345"}\n'
|
|
)
|
|
|
|
return temp_dir
|