33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
APP = (ROOT / "app" / "web_app_fastapi.py").read_text(encoding="utf-8")
|
|
TEMPLATE = (ROOT / "app" / "templates" / "admin_tools.html").read_text(encoding="utf-8")
|
|
COMPOSE = (ROOT / "docker-compose.yml").read_text(encoding="utf-8")
|
|
|
|
|
|
def test_admin_checklist_upload_route_exists_and_is_admin_only():
|
|
assert '@app.post("/admin/checklists/upload", name="admin_checklists_upload")' in APP
|
|
assert "async def admin_upload_checklist_config(" in APP
|
|
function = APP.split("async def admin_upload_checklist_config(", 1)[1].split("@app.", 1)[0]
|
|
assert "require_admin_session(request)" in function
|
|
|
|
|
|
def test_upload_uses_server_side_os_mapping_and_validates_json():
|
|
function = APP.split("async def admin_upload_checklist_config(", 1)[1].split("@app.", 1)[0]
|
|
assert "OS_CONFIG.get(os_type)" in function
|
|
assert "normalize_json" in function
|
|
assert "validate_xlsx" in function
|
|
assert "install_config_files" in function
|
|
|
|
|
|
def test_admin_ui_contains_checklist_configuration_form():
|
|
assert "admin_checklists_upload" in TEMPLATE
|
|
assert 'name="checklist_file"' in TEMPLATE
|
|
assert 'name="config_file"' in TEMPLATE
|
|
|
|
|
|
def test_config_mount_is_writable_for_persistent_uploads():
|
|
assert "./config:/app/config:ro" not in COMPOSE
|
|
assert "./config:/app/config" in COMPOSE
|