Cybersecurity-Projects/PROJECTS/intermediate/dlp-scanner/tests/conftest.py

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