diff --git a/docker/api/requirements.txt b/docker/api/requirements.txt index 3928d34..ad036e0 100644 --- a/docker/api/requirements.txt +++ b/docker/api/requirements.txt @@ -8,6 +8,11 @@ requests==2.32.3 pydantic==2.9.0 pydantic-settings==2.5.2 passlib==1.7.4 +# bcrypt MUSS gepinnt bleiben: passlib 1.7.4 liest bcrypt.__about__ (in +# bcrypt >= 4.1 entfernt) — der Backend-Selbsttest crasht dann mit +# "password cannot be longer than 72 bytes" und JEDES Hashing schlägt fehl. +# Genau das hielt die Ampel ab dem 23.07. rot (stable blieb 10 Commits zurück). +bcrypt==4.0.1 PyJWT==2.9.0 python-multipart==0.0.9 aiofiles==24.1.0 diff --git a/docker/api/test_cache_keys.py b/docker/api/test_cache_keys.py index a060ef3..c486fd9 100644 --- a/docker/api/test_cache_keys.py +++ b/docker/api/test_cache_keys.py @@ -15,7 +15,17 @@ def test_prescan_key_audio_vs_video(): assert audio.startswith(PRESCAN_AUDIO_PREFIX) assert video.startswith(PRESCAN_VIDEO_PREFIX) assert audio != video - assert audio.endswith("/dev/sr0") + assert "/dev/sr0" in audio + + +def test_prescan_key_unterscheidet_discs_im_selben_laufwerk(): + """Seit 23.07. ist der Disc-Fingerabdruck Teil des Keys — sonst bekam die + NÄCHSTE Disc im selben Laufwerk die Metadaten der vorherigen serviert. + (Der alte Test kannte den Fingerprint nicht und hielt die Ampel rot.)""" + a = generate_prescan_key("/dev/sr0", False, "EVANGELION_2_22:43GB") + b = generate_prescan_key("/dev/sr0", False, "MATRIX:31GB") + assert a != b + assert a.endswith("EVANGELION_2_22:43GB") def test_confirmed_key_mit_und_ohne_jahr():