NeahStable/test-n8n-python.py
2026-01-14 11:15:51 +01:00

88 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
Script pour tester le webhook N8N
Usage: python3 test-n8n-python.py [MISSION_ID] [PROJECT_NAME]
"""
import urllib.request
import json
import os
import sys
# Charger .env.local
env_vars = {}
if os.path.exists('.env.local'):
with open('.env.local') as f:
for line in f:
if '=' in line and not line.strip().startswith('#'):
key, value = line.strip().split('=', 1)
env_vars[key] = value
# Paramètres depuis la ligne de commande ou variables d'environnement
mission_id = sys.argv[1] if len(sys.argv) > 1 else os.environ.get('MISSION_ID', '3103ec1a-acde-4025-9ead-4e1a0ddc047c')
project_name = sys.argv[2] if len(sys.argv) > 2 else os.environ.get('PROJECT_NAME', 'SEFFIR')
webhook_url = "https://brain.slm-lab.net/webhook-test/mission-created"
api_key = env_vars.get('N8N_API_KEY', os.environ.get('N8N_API_KEY'))
api_url = env_vars.get('NEXT_PUBLIC_API_URL', os.environ.get('NEXT_PUBLIC_API_URL', 'https://hub.slm-lab.net/api'))
if not api_key:
print("❌ Erreur: N8N_API_KEY n'est pas définie")
print(" Vérifiez votre fichier .env.local ou exportez N8N_API_KEY")
sys.exit(1)
print(f"🧪 Test du webhook N8N")
print(f"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
print(f"Webhook URL: {webhook_url}")
print(f"Mission ID: {mission_id}")
print(f"Project Name: {project_name}")
print(f"")
data = {
"name": project_name,
"oddScope": ["odd-4"],
"niveau": "s",
"intention": "",
"missionType": "remote",
"donneurDOrdre": "group",
"projection": "long",
"services": [],
"participation": "ouvert",
"profils": [],
"guardians": {},
"volunteers": [],
"creatorId": "203cbc91-61ab-47a2-95d2-b5e1159327d7",
"missionId": mission_id,
"logoPath": f"missions/{mission_id}/logo.png",
"logoUrl": f"https://hub.slm-lab.net/api/missions/image/missions/{mission_id}/logo.png",
"config": {
"N8N_API_KEY": api_key,
"MISSION_API_URL": api_url
}
}
req = urllib.request.Request(
webhook_url,
data=json.dumps(data).encode('utf-8'),
headers={'Content-Type': 'application/json'}
)
try:
with urllib.request.urlopen(req) as response:
print(f"✅ Status: {response.status} {response.reason}")
print(f"📄 Réponse:")
response_data = json.loads(response.read().decode('utf-8'))
print(json.dumps(response_data, indent=2))
except urllib.error.HTTPError as e:
print(f"❌ HTTP Error {e.code}: {e.reason}")
try:
error_body = e.read().decode('utf-8')
print(f"📄 Corps de l'erreur:")
print(json.dumps(json.loads(error_body), indent=2))
except:
print(error_body)
sys.exit(1)
except Exception as e:
print(f"❌ Erreur: {e}")
sys.exit(1)