Initial commit
This commit is contained in:
149
test_api.sh
Normal file
149
test_api.sh
Normal 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 ""
|
||||
Reference in New Issue
Block a user