048562a6ba
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>
42 lines
1.5 KiB
Python
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
|