Spaces:
Runtime error
Runtime error
Download tests/test_scripts/test_create_admin.py from rahim237cm/jurix-api: direct link, hf CLI and curl.
- Browser
- Download file 3.95 kB
-
https://huggingface.co/spaces/rahim237cm/jurix-api/resolve/main/tests/test_scripts/test_create_admin.py
- Command line
-
hf download hf://spaces/rahim237cm/jurix-api/tests/test_scripts/test_create_admin.py
-
curl -L -o test_create_admin.py https://huggingface.co/spaces/rahim237cm/jurix-api/resolve/main/tests/test_scripts/test_create_admin.py
3.95 kB
| """ | |
| Tests de scripts/create_admin.py : un mot de passe refuse ne s'affiche jamais. | |
| demarrer.sh lance ce script a chaque premier deploiement, avec ADMIN_PASSWORD | |
| du .env de production. Un mot de passe hors politique (sans majuscule, par | |
| exemple) faisait afficher l'erreur Pydantic entiere, valeur refusee comprise : | |
| le mot de passe en clair dans le terminal et dans la sortie du deploiement. | |
| Usage: | |
| pytest tests/test_scripts/test_create_admin.py -v | |
| """ | |
| import asyncio | |
| import sys | |
| import pytest | |
| from scripts import create_admin | |
| REFUSE = "sansmajuscule123" | |
| def lancer(monkeypatch): | |
| def _lancer(*arguments): | |
| monkeypatch.setattr(sys, "argv", ["create_admin.py", *arguments]) | |
| return asyncio.run(create_admin.main()) | |
| return _lancer | |
| def test_un_mot_de_passe_refuse_n_est_jamais_affiche(lancer, capsys): | |
| code = lancer("--email", "admin@jurix.cm", "--password", REFUSE) | |
| sortie = capsys.readouterr() | |
| assert code == 1 | |
| assert REFUSE not in sortie.out + sortie.err | |
| assert "password" in sortie.err | |
| assert "uppercase" in sortie.err | |
| def test_le_refus_precede_tout_acces_a_la_base(lancer, monkeypatch): | |
| """ | |
| La validation echoue avant d'ouvrir une session : rien n'est ecrit. | |
| Les appels sont COMPTES : lever une erreur depuis la doublure ne prouvait | |
| rien, le `except Exception` du script l'avalait et rendait le meme code 1. | |
| """ | |
| appels = [] | |
| def interdit(*args, **kwargs): | |
| appels.append(1) | |
| raise AssertionError("la base ne devait pas etre ouverte") | |
| monkeypatch.setattr(create_admin, "AsyncSessionLocal", interdit) | |
| assert lancer("--email", "admin@jurix.cm", "--password", REFUSE) == 1 | |
| assert appels == [] | |
| VALIDE = "Valide-Essai-42" | |
| class _CompteExistant: | |
| def __init__(self, role): | |
| self.role, self.is_active, self.hashed_password = role, True, "hachage-d-origine" | |
| def base_avec(monkeypatch): | |
| """Une base dont l'adresse demandee appartient deja a un compte de ce role.""" | |
| def installer(role): | |
| compte = _CompteExistant(role) | |
| commits = [] | |
| class Resultat: | |
| def scalar_one_or_none(self): | |
| return compte | |
| class Session: | |
| async def __aenter__(self): | |
| return self | |
| async def __aexit__(self, *exc): | |
| return False | |
| async def execute(self, *args, **kwargs): | |
| return Resultat() | |
| async def commit(self): | |
| commits.append(1) | |
| monkeypatch.setattr(create_admin, "AsyncSessionLocal", Session) | |
| monkeypatch.setattr(create_admin, "hash_password", lambda mdp: f"hache:{mdp}") | |
| return compte, commits | |
| return installer | |
| def test_un_compte_ordinaire_n_est_jamais_promu_en_silence(lancer, base_avec, capsys): | |
| """ | |
| Le site est public avant l'etape 6 de demarrer.sh : quiconque s'inscrivait | |
| sous ADMIN_EMAIL devenait superadmin, avec son propre mot de passe. | |
| """ | |
| compte, commits = base_avec("user") | |
| code = lancer("--email", "admin@jurix.cm", "--password", VALIDE) | |
| assert code == 1 | |
| assert compte.role == "user" | |
| assert commits == [] | |
| assert "--promouvoir" in capsys.readouterr().err | |
| def test_promouvoir_remplace_le_mot_de_passe(lancer, base_avec): | |
| compte, commits = base_avec("user") | |
| code = lancer("--email", "admin@jurix.cm", "--password", VALIDE, "--promouvoir") | |
| assert code == 0 | |
| assert compte.role == "superadmin" | |
| assert compte.hashed_password == f"hache:{VALIDE}" | |
| assert commits == [1] | |
| def test_un_administrateur_existant_garde_son_mot_de_passe(lancer, base_avec): | |
| """create_admin.py ne remet jamais un mot de passe sans --reset-password.""" | |
| compte, _ = base_avec("admin") | |
| assert lancer("--email", "admin@jurix.cm", "--password", VALIDE) == 0 | |
| assert compte.role == "superadmin" | |
| assert compte.hashed_password == "hachage-d-origine" | |