Files
Rpa_Skills/tests/test_reference_scan.py
T

46 lines
1.9 KiB
Python

"""The skills are shared outside the source projects: no patient data, internal IPs,
credentials or keys in any bundled file, and the Superbill extracts are marked as examples."""
import re
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[1]
SKILLS = [ROOT / "skills" / "rpa-dashboard-ai", ROOT / "skills" / "rpa-dashboard-no-ai"]
AI_REFERENCE = ROOT / "skills" / "rpa-dashboard-ai" / "templates" / "reference"
FORBIDDEN = {
"internal IP": r"\b(10\.\d{1,3}|192\.168|172\.(1[6-9]|2\d|3[01]))\.\d{1,3}\.\d{1,3}\b",
"Google API key": r"AIza[0-9A-Za-z_-]{30,}",
"OpenAI/Anthropic key": r"\bsk-[A-Za-z0-9_-]{20,}",
"AWS key": r"\bAKIA[0-9A-Z]{16}\b",
"private key": r"-----BEGIN [A-Z ]*PRIVATE KEY-----",
"hard-coded secret": r"""(?i)\b(password|passwd|api_?key|secret|client_secret)\b\s*[:=]\s*['"][^'"{}\s]{6,}['"]""",
"SSN": r"\b\d{3}-\d{2}-\d{4}\b",
"quoted roster name ('SURNAME, FIRST')": r"""["'][A-Z]{2,}, [A-Z]""",
"client name": r"Gulf Coast",
}
MARKER = "EXAMPLE ONLY"
def text_files():
for skill in SKILLS:
for f in skill.rglob("*"):
if f.is_file() and "node_modules" not in f.parts and f.name != "package-lock.json":
yield f
@pytest.mark.parametrize("what", FORBIDDEN)
def test_no_sensitive_data_in_bundled_files(what):
hits = [f"{f.relative_to(ROOT)}:{n}" for f in text_files()
for n, line in enumerate(f.read_text(encoding="utf-8", errors="ignore").splitlines(), 1)
if re.search(FORBIDDEN[what], line)]
assert not hits, f"{what} found: {hits}"
def test_superbill_extracts_are_marked_as_examples():
files = [f for f in AI_REFERENCE.rglob("*") if f.is_file()]
assert files
unmarked = [str(f.relative_to(ROOT)) for f in files
if MARKER not in "".join(f.read_text(encoding="utf-8").splitlines(keepends=True)[:5])]
assert not unmarked, f"no '{MARKER}' banner in the first lines: {unmarked}"