Spaces:
Running
Running
| 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 | |