Files
rippy/docker/api/test_cache_keys.py
Hitonabi 048562a6ba 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>
2026-07-24 08:55:03 +02:00

42 lines
1.5 KiB
Python

"""Tests für cache/keys.py: deterministische Key-Erzeugung."""
from cache.keys import (
PRESCAN_AUDIO_PREFIX,
PRESCAN_VIDEO_PREFIX,
generate_confirmed_key,
generate_prescan_key,
generate_tmdb_key,
)
def test_prescan_key_audio_vs_video():
audio = generate_prescan_key("/dev/sr0", is_audio=True)
video = generate_prescan_key("/dev/sr0", is_audio=False)
assert audio.startswith(PRESCAN_AUDIO_PREFIX)
assert video.startswith(PRESCAN_VIDEO_PREFIX)
assert audio != video
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():
assert generate_confirmed_key("Blade Runner", 1982) == "confirmed:Blade Runner:1982"
assert generate_confirmed_key("Blade Runner") == "confirmed:Blade Runner:0"
def test_tmdb_key_mit_params_unterscheidet():
ohne = generate_tmdb_key("search/movie")
mit = generate_tmdb_key("search/movie", {"query": "Dune"})
assert ohne != mit
assert ohne.startswith("tmdb:")
assert "search/movie" in mit