| """End-to-end pipeline: known identifiers must not survive sanitisation. | |
| Uses the pure-Python RuleDetector so the test is fast and needs no spaCy/Presidio. | |
| """ | |
| from src.detect import RuleDetector | |
| from src.pipeline import Pipeline | |
| from src.transform import PSEUDONYM | |
| def test_pipeline_removes_known_pii(): | |
| text = ("Pt seen, NHS no 943 476 5919, dob 12/03/1981, lives SW1A 1AA, " | |
| "tel 07700 900123, GMC 1234567.") | |
| result = Pipeline(detector=RuleDetector()).sanitise(text, PSEUDONYM, person_id="p1") | |
| for leaked in ("943 476 5919", "12/03/1981", "SW1A 1AA", "07700 900123", "1234567"): | |
| assert leaked not in result.sanitised | |
| assert result.audit["entities_removed"] >= 5 | |