Initial commit

This commit is contained in:
innotex
2026-01-16 18:40:39 +01:00
commit 9ec63a8aa2
76 changed files with 13235 additions and 0 deletions

149
test_api.sh Normal file
View File

@@ -0,0 +1,149 @@
#!/bin/bash
# 🧪 Script de test - InnotexBoard API
# Ce script teste tous les endpoints avec curl
# Couleurs
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Configuration
API_URL="http://localhost:8000/api/v1"
TEST_USER="${1:-your_user}"
TEST_PASS="${2:-your_pass}"
echo -e "${YELLOW}🧪 Démarrage des tests InnotexBoard${NC}\n"
# 1. Vérifier la santé de l'API
echo -e "${YELLOW}1⃣ Test de santé${NC}"
response=$(curl -s -X GET "$API_URL/../health")
if echo "$response" | grep -q "healthy"; then
echo -e "${GREEN}✅ API en bonne santé${NC}\n"
else
echo -e "${RED}❌ API pas accessible${NC}"
echo "Response: $response\n"
fi
# 2. Login et obtenir le token
echo -e "${YELLOW}2⃣ Test de connexion (PAM)${NC}"
echo "Utilisateur: $TEST_USER"
login_response=$(curl -s -X POST "$API_URL/auth/login" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=$TEST_USER&password=$TEST_PASS")
TOKEN=$(echo "$login_response" | grep -o '"access_token":"[^"]*' | cut -d'"' -f4)
if [ -n "$TOKEN" ]; then
echo -e "${GREEN}✅ Connexion réussie${NC}"
echo "Token: ${TOKEN:0:50}...\n"
else
echo -e "${RED}❌ Connexion échouée${NC}"
echo "Response: $login_response"
exit 1
fi
# 3. Test /auth/me
echo -e "${YELLOW}3⃣ Test de l'utilisateur courant${NC}"
curl -s -X GET "$API_URL/auth/me" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool
echo ""
# 4. Test /system/stats
echo -e "${YELLOW}4⃣ Test des statistiques système${NC}"
echo "Récupération du CPU, RAM et processus..."
stats_response=$(curl -s -X GET "$API_URL/system/stats" \
-H "Authorization: Bearer $TOKEN")
if echo "$stats_response" | grep -q "cpu"; then
echo -e "${GREEN}✅ Stats système disponibles${NC}"
echo "$stats_response" | python3 -m json.tool | head -30
echo "... (truncated)"
else
echo -e "${RED}❌ Erreur lors de la récupération des stats${NC}"
echo "$stats_response"
fi
echo ""
# 5. Test /system/cpu uniquement
echo -e "${YELLOW}5⃣ Test CPU uniquement${NC}"
curl -s -X GET "$API_URL/system/cpu" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool
echo ""
# 6. Test /system/memory uniquement
echo -e "${YELLOW}6⃣ Test Mémoire uniquement${NC}"
curl -s -X GET "$API_URL/system/memory" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool
echo ""
# 7. Test /system/processes
echo -e "${YELLOW}7⃣ Test des processus (Top 5)${NC}"
curl -s -X GET "$API_URL/system/processes?limit=5" \
-H "Authorization: Bearer $TOKEN" | python3 -m json.tool | head -50
echo ""
# 8. Test Docker status
echo -e "${YELLOW}8⃣ Test de l'état Docker${NC}"
docker_status=$(curl -s -X GET "$API_URL/docker/status" \
-H "Authorization: Bearer $TOKEN")
echo "$docker_status" | python3 -m json.tool
if echo "$docker_status" | grep -q "true"; then
DOCKER_OK=true
echo -e "${GREEN}✅ Docker accessible${NC}\n"
else
DOCKER_OK=false
echo -e "${YELLOW}⚠️ Docker non accessible (c'est normal en dev)${NC}\n"
fi
# 9. Test Docker containers (si Docker est actif)
if [ "$DOCKER_OK" = true ]; then
echo -e "${YELLOW}9⃣ Test lister les conteneurs${NC}"
containers=$(curl -s -X GET "$API_URL/docker/containers" \
-H "Authorization: Bearer $TOKEN")
echo "$containers" | python3 -m json.tool | head -50
echo ""
# Compter les conteneurs
count=$(echo "$containers" | grep -o '"id"' | wc -l)
echo "Total: $count conteneur(s)"
echo ""
fi
# 10. Test sans token (doit échouer)
echo -e "${YELLOW}🔟 Test de sécurité (sans token)${NC}"
no_token=$(curl -s -X GET "$API_URL/system/stats")
if echo "$no_token" | grep -q "401\|Unauthorized\|invalid"; then
echo -e "${GREEN}✅ Accès sans token refusé (sécurisé)${NC}"
else
echo -e "${RED}❌ Accès sans token autorisé (DANGER!)${NC}"
fi
echo ""
# 11. Test avec token invalide
echo -e "${YELLOW}1⃣1⃣ Test de sécurité (token invalide)${NC}"
bad_token=$(curl -s -X GET "$API_URL/system/stats" \
-H "Authorization: Bearer invalid_token_12345")
if echo "$bad_token" | grep -q "401\|Unauthorized"; then
echo -e "${GREEN}✅ Token invalide refusé (sécurisé)${NC}"
else
echo -e "${RED}❌ Token invalide accepté (DANGER!)${NC}"
fi
echo ""
# Résumé
echo -e "${YELLOW}📊 Résumé des tests${NC}"
echo -e "${GREEN}✅ Tous les tests sont terminés${NC}"
echo -e "\n${YELLOW}💡 Tips:${NC}"
echo "- Accédez à la documentation Swagger: http://localhost:8000/docs"
echo "- Accédez à l'interface web: http://localhost:3000"
echo "- Vérifiez les logs du backend: tail -f backend/logs.log"
echo ""