Spaces:
Sleeping
Sleeping
File size: 3,726 Bytes
65f883f | 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 | from pathlib import Path
APP_TEXT = Path("presidio_streamlit.py").read_text(encoding="utf-8")
REINSERT_UI_TEXT = Path("reinsert_mode_ui.py").read_text(encoding="utf-8")
STARTUP_PATCH_TEXT = Path("fix_streamlit_nested_expanders.py").read_text(encoding="utf-8")
def test_reinsert_flow_is_direct_source():
assert "from reinsert_mode_ui import render_reinsert_mode" in APP_TEXT
assert 'solidprivacy_work_mode = st.radio(' in APP_TEXT
assert 'if solidprivacy_work_mode == "Originele waarden terugzetten":' in APP_TEXT
assert "render_reinsert_mode()" in APP_TEXT
assert "st.stop()" in APP_TEXT
def test_reinsert_flow_has_four_task_headings():
for marker in [
'st.subheader("1. Voeg Scrub Key toe")',
'st.subheader("2. Voeg tekst of document toe")',
'st.subheader("3. Controleer herstelrapport")',
'st.subheader("4. Download herstelde output")',
]:
assert marker in REINSERT_UI_TEXT
def test_reinsert_inputs_remain_available():
for marker in [
"Upload Scrub Key JSON (.json)",
"Of plak Scrub Key JSON",
"Plak hier de tekst waarin u originele waarden lokaal wilt terugzetten",
"TXT-bestand terugzetten",
"Upload een TXT-bestand met placeholders",
"DOCX-bestand terugzetten",
"Upload een DOCX-bestand met placeholders",
"PDF-tekst terugzetten naar TXT",
"Upload een PDF-bestand met placeholders",
]:
assert marker in REINSERT_UI_TEXT
def test_acknowledgement_gates_remain_present():
for marker in [
"ack_scrub_key_import_risk",
"ack_reinsert_text_confidential",
"ack_reinsert_txt_confidential",
"ack_reinsert_docx_confidential",
"ack_reinsert_pdf_text_confidential",
"ack_download_restored_text_confidential",
"ack_download_restored_txt_confidential",
"ack_download_restored_docx_confidential",
"ack_download_restored_pdf_text_confidential",
"disabled=not",
]:
assert marker in REINSERT_UI_TEXT
def test_restored_download_semantics_are_preserved():
for marker in [
'file_name="solidprivacy_herstelde_tekst.txt"',
'file_name="solidprivacy_hersteld_txt_bestand.txt"',
'file_name="solidprivacy_hersteld_docx_bestand.docx"',
'file_name="solidprivacy_herstelde_txt_uit_pdf.txt"',
'mime="text/plain"',
'mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"',
]:
assert marker in REINSERT_UI_TEXT
def test_no_ai_cloud_ocr_or_restored_pdf_added():
lower_text = REINSERT_UI_TEXT.lower()
for forbidden in [
"requests.post",
"httpx.post",
"openai.chat",
"anthropic",
"download herstelde pdf",
"pdf-output: ja",
"ocr gebruikt: ja",
"cloud processing call",
"server-side key storage",
"durable key vault",
]:
assert forbidden not in lower_text
for required in [
"geen AI- of cloudverwerking",
"geen AI, geen cloudverwerking en geen OCR",
"OCR gebruikt: Nee",
"PDF-output: Nee",
"Deze functie maakt geen herstelde PDF",
]:
assert required in REINSERT_UI_TEXT
def test_startup_injection_is_guarded_against_duplicate_direct_mode():
assert "if mode_marker in text and 'solidprivacy_work_mode = st.radio(' not in text:" in STARTUP_PATCH_TEXT
def test_pdf_text_startup_patch_skips_direct_source_reinsert_ui():
pdf_patch_text = Path("fix_streamlit_pdf_text_reinsert.py").read_text(encoding="utf-8")
assert "from reinsert_mode_ui import render_reinsert_mode" in pdf_patch_text
assert "raise SystemExit(0)" in pdf_patch_text
|