Extrait de li.k3nny.fr et rendu indépendant du serveur : toute la configuration propre à l'hôte passe par li.env (URL publique, chemins, expiration, répertoires « HTML seulement », commande nginx). Écarts avec la version en production : - li-user del retire aussi la page .html, pas seulement le .xspf ; - li-gen ignore les répertoires cachés, pas seulement les fichiers ; - textes de la page HTML accentués. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
"""python3 -m unittest discover tests"""
|
||
import importlib.machinery
|
||
import importlib.util
|
||
import subprocess
|
||
import unittest
|
||
from pathlib import Path
|
||
|
||
_chargeur = importlib.machinery.SourceFileLoader(
|
||
"li_gen", str(Path(__file__).resolve().parent.parent / "bin" / "li-gen"))
|
||
_spec = importlib.util.spec_from_loader("li_gen", _chargeur)
|
||
li_gen = importlib.util.module_from_spec(_spec)
|
||
_chargeur.exec_module(li_gen)
|
||
|
||
|
||
class Signature(unittest.TestCase):
|
||
def test_identique_a_openssl(self):
|
||
# Ce que calcule li-user, donc ce que verifie secure_link_md5.
|
||
chemin, secret = "/library/movies/Été à Paris/The Janitor’s Boy.mkv", "abc123"
|
||
brut = f"2145916800{chemin}{secret}"
|
||
attendu = subprocess.run(
|
||
["sh", "-c", "printf '%s' \"$1\" | openssl md5 -binary | openssl base64 "
|
||
"| tr '+/' '-_' | tr -d '='", "sh", brut],
|
||
check=True, capture_output=True, text=True).stdout.strip()
|
||
self.assertEqual(li_gen.signe(chemin, 2145916800, secret), attendu)
|
||
|
||
def test_signe_le_chemin_decode(self):
|
||
cfg = li_gen.Config({"LI_BASE_URL": "https://li.example.org/"})
|
||
u = li_gen.url(cfg, "/library/a b’c.mkv", "alice", "s3cret")
|
||
self.assertTrue(u.startswith("https://li.example.org/library/a%20b%E2%80%99c.mkv?"))
|
||
self.assertTrue(u.endswith("&s=" + li_gen.signe("/library/a b’c.mkv", 2145916800, "s3cret")))
|
||
|
||
|
||
class Configuration(unittest.TestCase):
|
||
def test_base_obligatoire(self):
|
||
with self.assertRaises(SystemExit):
|
||
li_gen.Config({})
|
||
|
||
|
||
if __name__ == "__main__":
|
||
unittest.main()
|