secrets: afficher/masquer + copier la valeur, revelation gestionnaire auditee (og/test_coffre_secrets.py)

This commit is contained in:
2026-10-30 18:34:18 -04:00
parent fe4bed91d7
commit c29bafeccc
+53
View File
@@ -778,3 +778,56 @@ class TestDistribuables:
# Flag désactivé : 503 comme les autres routes. # Flag désactivé : 503 comme les autres routes.
monkeypatch.setenv("OBSIGATE_SECRETS_ENABLED", "0") monkeypatch.setenv("OBSIGATE_SECRETS_ENABLED", "0")
assert self._lister(client, jeton).status_code == 503 assert self._lister(client, jeton).status_code == 503
# ---------------------------------------------------------------------------
# Révélation manuelle (panneau détail : Afficher / Copier la valeur)
# ---------------------------------------------------------------------------
class TestRevelation:
def test_proprietaire_revele_et_audit_sans_valeur(self, client, env_coffre):
_creer_coffre_secret(client)
resp = client.post("/api/coffres/personnel/secrets/gitea-token/reveler")
assert resp.status_code == 200, resp.text
corps = resp.json()
assert corps["valeur"] == VALEUR_TEST
assert corps["reference"] == "coffre:personnel/gitea-token"
assert corps["version"] == 1
audit = (env_coffre / "audit.log").read_text(encoding="utf-8")
assert "revelation_manuelle" in audit
assert VALEUR_TEST not in audit
def test_lecteur_octroi_utilisateur_ne_revele_pas(self, client):
_creer_coffre_secret(client)
resp = client.post("/api/coffres/personnel/octrois", json={
"cible_type": "utilisateur", "cible_id": "alice",
"secret_nom": "gitea-token"})
assert resp.status_code == 200, resp.text
_connecter(client, "alice", role="user")
# Voit les métadonnées…
assert client.get("/api/coffres/personnel/secrets").status_code == 200
# …mais ne révèle jamais la valeur.
resp = client.post("/api/coffres/personnel/secrets/gitea-token/reveler")
assert resp.status_code == 403
def test_secret_inexistant_404(self, client):
_creer_coffre_secret(client)
resp = client.post("/api/coffres/personnel/secrets/absent/reveler")
assert resp.status_code == 404
def test_secret_expire_410(self, client):
_creer_coffre_secret(client)
hier = (datetime.now(timezone.utc) - timedelta(days=1)).isoformat()
resp = client.post("/api/coffres/personnel/secrets", json={
"nom": "vieux-jeton", "type": "token", "valeur": VALEUR_TEST,
"expiration": hier})
assert resp.status_code == 200, resp.text
resp = client.post("/api/coffres/personnel/secrets/vieux-jeton/reveler")
assert resp.status_code == 410
assert resp.json()["detail"] == "secret_expire"
def test_flag_desactive_503(self, client, monkeypatch):
_creer_coffre_secret(client)
monkeypatch.setenv("OBSIGATE_SECRETS_ENABLED", "0")
resp = client.post("/api/coffres/personnel/secrets/gitea-token/reveler")
assert resp.status_code == 503