-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_api.py
More file actions
143 lines (127 loc) · 4.24 KB
/
test_api.py
File metadata and controls
143 lines (127 loc) · 4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/usr/bin/env python3
"""
Script de test pour l'API Tcha-llé
"""
import requests
import json
import time
API_BASE = "http://localhost:8000"
def test_health():
"""Test du endpoint de santé"""
print("🔍 Test du endpoint de santé...")
try:
response = requests.get(f"{API_BASE}/health")
if response.status_code == 200:
print("✅ Health check: OK")
return True
else:
print(f"❌ Health check: {response.status_code}")
return False
except Exception as e:
print(f"❌ Health check: {e}")
return False
def test_categories():
"""Test du endpoint des catégories"""
print("🔍 Test des catégories...")
try:
response = requests.get(f"{API_BASE}/categories/")
if response.status_code == 200:
categories = response.json()
print(f"✅ Catégories: {len(categories)} trouvées")
for cat in categories[:3]:
print(f" - {cat['name']}")
return True
else:
print(f"❌ Catégories: {response.status_code}")
return False
except Exception as e:
print(f"❌ Catégories: {e}")
return False
def test_merchants():
"""Test du endpoint des commerces"""
print("🔍 Test des commerces...")
try:
response = requests.get(f"{API_BASE}/merchants/")
if response.status_code == 200:
merchants = response.json()
print(f"✅ Commerces: {len(merchants)} trouvés")
for merchant in merchants[:3]:
print(f" - {merchant['name']} ({'OUVERT' if merchant['is_open'] else 'FERMÉ'})")
return True
else:
print(f"❌ Commerces: {response.status_code}")
return False
except Exception as e:
print(f"❌ Commerces: {e}")
return False
def test_search():
"""Test du moteur de recherche"""
print("🔍 Test de la recherche conversationnelle...")
try:
search_data = {
"query": "Trouve-moi un endroit où je peux manger du porc ce soir près de moi",
"latitude": 6.1723,
"longitude": 1.2312
}
response = requests.post(
f"{API_BASE}/merchants/search",
json=search_data,
headers={"Content-Type": "application/json"}
)
if response.status_code == 200:
result = response.json()
print(f"✅ Recherche: {result['total_count']} résultats en {result['search_time_ms']:.1f}ms")
print(f" Query traitée: {result['query_processed']}")
return True
else:
print(f"❌ Recherche: {response.status_code}")
print(f" Réponse: {response.text}")
return False
except Exception as e:
print(f"❌ Recherche: {e}")
return False
def test_auth():
"""Test de l'authentification"""
print("🔍 Test de l'authentification...")
try:
# Test request OTP
otp_data = {"phone_number": "+225123456789"}
response = requests.post(
f"{API_BASE}/auth/request-otp",
json=otp_data,
headers={"Content-Type": "application/json"}
)
if response.status_code == 200:
print("✅ Demande OTP: OK")
# Note: On ne peut pas tester la vérification OTP sans le code réel
return True
else:
print(f"❌ Demande OTP: {response.status_code}")
return False
except Exception as e:
print(f"❌ Authentification: {e}")
return False
def main():
print("🧪 Test de l'API Tcha-llé")
print("=" * 40)
tests = [
test_health,
test_categories,
test_merchants,
test_search,
test_auth
]
passed = 0
total = len(tests)
for test in tests:
if test():
passed += 1
print()
print("=" * 40)
print(f"📊 Résultats: {passed}/{total} tests réussis")
if passed == total:
print("🎉 Tous les tests sont passés ! L'API fonctionne correctement.")
else:
print("⚠️ Certains tests ont échoué. Vérifiez les logs ci-dessus.")
if __name__ == "__main__":
main()