Spaces:
Sleeping
Sleeping
solidprivacy-nl commited on
Commit ·
8707402
1
Parent(s): 81d4943
Add tests for two-mode UI skeleton patch
Browse files
tests/test_two_mode_ui_patch.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
PATCH_TEXT = Path("fix_streamlit_nested_expanders.py").read_text(encoding="utf-8")
|
| 5 |
+
|
| 6 |
+
|
| 7 |
+
def test_two_mode_labels_are_present_in_patch():
|
| 8 |
+
assert "Anonimiseren" in PATCH_TEXT
|
| 9 |
+
assert "Originele waarden terugzetten" in PATCH_TEXT
|
| 10 |
+
assert "Kies werkmodus" in PATCH_TEXT
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def test_two_mode_patch_uses_streamlit_tabs():
|
| 14 |
+
assert "st.tabs" in PATCH_TEXT
|
| 15 |
+
assert 'two_mode_anon_tab, two_mode_reinsert_tab = st.tabs(["Anonimiseren", "Originele waarden terugzetten"])' in PATCH_TEXT
|
| 16 |
+
assert "with two_mode_anon_tab" in PATCH_TEXT
|
| 17 |
+
assert "with two_mode_reinsert_tab" in PATCH_TEXT
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def test_two_mode_captions_explain_privacy_modes():
|
| 21 |
+
assert "Anonimiseren: upload of plak brontekst" in PATCH_TEXT
|
| 22 |
+
assert "download opgeschoonde uitvoer" in PATCH_TEXT
|
| 23 |
+
assert "Originele waarden terugzetten: laad een Scrub Key" in PATCH_TEXT
|
| 24 |
+
assert "lokale tekst-terugzetflow" in PATCH_TEXT
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def test_existing_scrub_key_export_and_import_labels_remain_present():
|
| 28 |
+
assert "Scrub Key (JSON)" in PATCH_TEXT
|
| 29 |
+
assert "Download Scrub Key (.json)" in PATCH_TEXT
|
| 30 |
+
assert "Scrub Key laden" in PATCH_TEXT
|
| 31 |
+
assert "Upload Scrub Key JSON (.json)" in PATCH_TEXT
|
| 32 |
+
assert "Of plak Scrub Key JSON" in PATCH_TEXT
|
| 33 |
+
assert "Valideer en laad Scrub Key" in PATCH_TEXT
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def test_existing_pasted_text_reinsert_labels_remain_present():
|
| 37 |
+
assert "Plak hier de tekst waarin u originele waarden lokaal wilt terugzetten" in PATCH_TEXT
|
| 38 |
+
assert "Zet originele waarden lokaal terug" in PATCH_TEXT
|
| 39 |
+
assert "Herstelde tekst" in PATCH_TEXT
|
| 40 |
+
assert "Download herstelde tekst (.txt)" in PATCH_TEXT
|
| 41 |
+
assert "Controleverslag terugzetten" in PATCH_TEXT
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def test_existing_anonymization_and_download_markers_remain_present():
|
| 45 |
+
assert 'st.subheader("4. Download opgeschoonde bestanden")' in PATCH_TEXT
|
| 46 |
+
assert "Download opgeschoonde bestanden" in PATCH_TEXT
|
| 47 |
+
assert "Eindcontrole vóór download" in PATCH_TEXT
|
| 48 |
+
assert "Extra exportcontrole" in PATCH_TEXT
|
| 49 |
+
assert "st.warning(EXPORT_GUIDANCE)" in PATCH_TEXT
|
| 50 |
+
|
| 51 |
+
|
| 52 |
+
def test_scrubbed_download_behavior_markers_are_not_removed_or_rewired():
|
| 53 |
+
# The startup patch must not patch existing scrubbed download widgets directly.
|
| 54 |
+
assert "download_txt" not in PATCH_TEXT
|
| 55 |
+
assert "download_csv" not in PATCH_TEXT
|
| 56 |
+
assert "download_docx" not in PATCH_TEXT
|
| 57 |
+
assert "download_pdf" not in PATCH_TEXT
|
| 58 |
+
assert "def apply_replacements_to_text" not in PATCH_TEXT
|
| 59 |
+
assert "apply_replacements_to_text =" not in PATCH_TEXT
|
| 60 |
+
assert "export_text = apply_replacements_to_text" not in PATCH_TEXT
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
def test_two_mode_patch_does_not_add_txt_docx_or_pdf_reinsert_upload_ui():
|
| 64 |
+
forbidden_markers = [
|
| 65 |
+
"reinsert_txt_bytes",
|
| 66 |
+
"reinsert_docx_bytes",
|
| 67 |
+
"Upload TXT",
|
| 68 |
+
"Upload .txt",
|
| 69 |
+
"Upload DOCX",
|
| 70 |
+
"Upload .docx",
|
| 71 |
+
"hersteld DOCX",
|
| 72 |
+
"Download hersteld DOCX",
|
| 73 |
+
"download_docx_reinserted",
|
| 74 |
+
"download_pdf_reinserted",
|
| 75 |
+
"PDF reinsert",
|
| 76 |
+
"pdf reinsert",
|
| 77 |
+
]
|
| 78 |
+
for marker in forbidden_markers:
|
| 79 |
+
assert marker not in PATCH_TEXT
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
def test_two_mode_patch_does_not_add_ai_cloud_or_rehydration_behavior():
|
| 83 |
+
lower_patch = PATCH_TEXT.lower()
|
| 84 |
+
for marker in [
|
| 85 |
+
"requests.post",
|
| 86 |
+
"httpx.post",
|
| 87 |
+
"cloud processing call",
|
| 88 |
+
"rehydrat",
|
| 89 |
+
"restore_original_document",
|
| 90 |
+
"server-side key storage",
|
| 91 |
+
"durable key vault",
|
| 92 |
+
]:
|
| 93 |
+
assert marker.lower() not in lower_patch
|
| 94 |
+
assert "openai" not in lower_patch
|
| 95 |
+
assert "anthropic" not in lower_patch
|
| 96 |
+
assert "st.stop()" not in PATCH_TEXT
|
| 97 |
+
assert "blocks_export = True" not in PATCH_TEXT
|
| 98 |
+
assert "changes_export_semantics = True" not in PATCH_TEXT
|