Compare commits
3
Commits
75f9727710
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b7551073f5 | ||
|
|
e8b4a604e9 | ||
|
|
caa0b126b1 |
@@ -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
@@ -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
@@ -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.")
|
||||
Reference in New Issue
Block a user