"""Import-Smoke-Test: bricht, wenn main.py kaputte Imports oder Verdrahtung hat. Warum: Kein anderer Test importiert main.py — ein Tippfehler dort fiele sonst erst beim Container-Start auf (und die Ampel bliebe fälschlich grün). Läuft nur unter Linux (detection.py nutzt fcntl/ioctl), also genau dort, wo auch die Ampel läuft. """ import sys import pytest if sys.platform == "win32": # pragma: no cover pytest.skip("detection.py braucht fcntl (Linux)", allow_module_level=True) def test_main_importierbar_und_routen_verdrahtet(): from main import app routen = {route.path for route in app.routes} for pfad in ("/health", "/jobs", "/devices", "/logs", "/settings", "/prescan"): assert pfad in routen, f"Route {pfad} fehlt" def test_dateiname_validierung_blockt_pfad_tricks(): """Download-Endpoint: nur nackte Dateinamen — kein .., kein Slash, kein Dotfile.""" from main import _sicherer_dateiname assert _sicherer_dateiname("film.mkv") is True assert _sicherer_dateiname("../../etc/passwd") is False assert _sicherer_dateiname("a/b.mkv") is False assert _sicherer_dateiname("a\\b.mkv") is False assert _sicherer_dateiname(".versteckt") is False assert _sicherer_dateiname("") is False def test_worker_task_name_passt_zum_celery_client(): """API schickt an 'worker.tasks.rip_disc' — der Name ist Vertrag mit dem Worker.""" import inspect import celery_client quelle = inspect.getsource(celery_client.start_rip) assert '"worker.tasks.rip_disc"' in quelle