fix(ci): Ampel entrostet — bcrypt-Pin + cache_keys-Test ans Fingerprint-Format angepasst

Die Ampel war seit 23.07. rot, stable hing 10 Commits hinter main:
1. bcrypt >= 4.1 entfernt __about__ — passlib 1.7.4 crasht beim Backend-
   Selbsttest ('password cannot be longer than 72 bytes'), jedes Hashing
   schlug fehl. Fix: bcrypt==4.0.1 gepinnt (passlib-kompatibel, dokumentiert
   im requirements-Kommentar).
2. test_prescan_key_audio_vs_video erwartete das Key-Format OHNE den
   Disc-Fingerprint vom 23.07. Test an das echte (gewollte) Format
   angepasst + neuer Testfall: zwei Discs im selben Laufwerk -> zwei Keys.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-24 08:55:03 +02:00
parent 731ed316df
commit 048562a6ba
2 changed files with 16 additions and 1 deletions
+5
View File
@@ -8,6 +8,11 @@ requests==2.32.3
pydantic==2.9.0 pydantic==2.9.0
pydantic-settings==2.5.2 pydantic-settings==2.5.2
passlib==1.7.4 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 PyJWT==2.9.0
python-multipart==0.0.9 python-multipart==0.0.9
aiofiles==24.1.0 aiofiles==24.1.0
+11 -1
View File
@@ -15,7 +15,17 @@ def test_prescan_key_audio_vs_video():
assert audio.startswith(PRESCAN_AUDIO_PREFIX) assert audio.startswith(PRESCAN_AUDIO_PREFIX)
assert video.startswith(PRESCAN_VIDEO_PREFIX) assert video.startswith(PRESCAN_VIDEO_PREFIX)
assert audio != video 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(): def test_confirmed_key_mit_und_ohne_jahr():