3 Commits
Author SHA1 Message Date
Antho b7551073f5 docs: clarifie l'intitulé de colonne du tableau de tests
Build & Deploy / build (push) Successful in 20s
« Couverture » prêtait à confusion avec les pourcentages de couverture de
code mesurés (README racine du rendu) : la colonne décrit en réalité le
périmètre fonctionnel de chaque fichier de test, pas un taux.
2026-08-16 15:02:06 +02:00
Antho e8b4a604e9 docs: corrige la référence à GitHub dans le RUNBOOK
Build & Deploy / build (push) Successful in 21s
Les dépôts sont hébergés sur Gitea (git.nfteam.ovh), jamais sur GitHub.
2026-08-16 14:56:41 +02:00
Antho caa0b126b1 chore: supprime testAPI.py, script de test manuel devenu inopérant
Build & Deploy / build (push) Successful in 22s
Ce script interrogeait GET /dashboard sans jeton. Depuis l'ajout de
l'authentification JWT, tous les endpoints de données répondent 401 : le
script échoue systématiquement (vérifié sur l'environnement déployé).

Il est par ailleurs entièrement couvert par la suite pytest, qui teste le
même endpoint avec et sans authentification. Le conserver à la racine du
dépôt laissait croire à un outil de diagnostic utilisable.
2026-08-15 15:38:59 +02:00
3 changed files with 3 additions and 50 deletions
+2 -2
View File
@@ -132,8 +132,8 @@ pip install pytest httpx && pytest -q
**82 tests**, curseur SQL simulé (aucune vraie base requise) :
| Fichier | Couverture |
|---------|------------|
| Fichier | Domaine testé |
|---------|---------------|
| `test_endpoints.py` | santé, référentiels, authentification, filtres du dashboard, rôles par enum |
| `test_historique.py` | bornes de dates, validation du format, agrégation des courbes par monitoring et par service |
| `test_securite.py` | protection 401 de chaque route, RBAC 403, jeton forgé rejeté, en-têtes de sécurité, rate-limit 429, compte désactivé, droits RGPD |
+1 -1
View File
@@ -77,4 +77,4 @@ docker compose up -d datasentinel-api
## Contacts
- Hébergement / infra : administrateur homelab (neckfire).
- Application / code : A. Coyaud (auteur, dépôts GitHub).
- Application / code : A. Coyaud (auteur, dépôts Gitea — git.nfteam.ovh).
-47
View File
@@ -1,47 +0,0 @@
import requests
import json
# Configuration
BASE_URL = "http://127.0.0.1:8000"
def test_get_dashboard():
print(f"--- Test de l'endpoint: {BASE_URL}/dashboard ---")
try:
# 1. Envoi de la requête
response = requests.get(f"{BASE_URL}/dashboard")
# 2. Vérification du code statut
if response.status_code == 200:
data = response.json()
if not data:
print("L'API a répondu avec succès, mais le tableau est vide (VUE_CONSO ne contient rien).")
return
# 3. Affichage formaté du tableau
print(f"{'ID':<5} | {'NOM DU MONITORING':<40} | {'ERREURS':<8} | {'SERVICE':<15}")
print("-" * 75)
for item in data:
print(f"{item['id_monito']:<5} | {item['nom_monito'][:38]:<40} | {item['nb_erreurs']:<8} | {item['service']:<15}")
print(f"\nTotal de lignes récupérées : {len(data)}")
else:
print(f"Erreur lors de la requête : {response.status_code}")
print(response.text)
except requests.exceptions.ConnectionError:
print("Erreur : Impossible de se connecter à l'API. Est-ce qu'uvicorn est lancé ?")
if __name__ == "__main__":
# Petit check de santé avant de tester les données
print("Vérification de l'état de l'API...")
health = requests.get(f"{BASE_URL}/health").json()
print(f"Statut API : {health['api']} | Statut DB : {health['database']}\n")
if health['database'] == "ok":
test_get_dashboard()
else:
print("Abandon du test : La base de données n'est pas accessible.")