import fetch from 'node-fetch'; const API_URL = 'http://localhost:4000/api'; async function testAdminAPI() { try { console.log('🔐 Test de l\'API Admin - RĂ©cupĂ©ration des tickets\n'); console.log('━'.repeat(60)); // Étape 1: Connexion en tant qu'admin console.log('1ïžâƒŁ Connexion en tant qu\'admin...'); const loginResponse = await fetch(`${API_URL}/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: 'admin@thetiptop.com', password: 'Admin123!', }), }); if (!loginResponse.ok) { console.error('❌ Échec de la connexion'); const error = await loginResponse.text(); console.error('Erreur:', error); return; } const loginData = await loginResponse.json(); console.log('✅ Connexion rĂ©ussie'); console.log(` Token: ${loginData.data.token.substring(0, 20)}...`); console.log(` RĂŽle: ${loginData.data.user.role}\n`); const token = loginData.data.token; // Étape 2: RĂ©cupĂ©rer tous les tickets console.log('2ïžâƒŁ RĂ©cupĂ©ration de tous les tickets...'); const ticketsResponse = await fetch(`${API_URL}/admin/tickets`, { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, }); if (!ticketsResponse.ok) { console.error('❌ Échec de la rĂ©cupĂ©ration des tickets'); const error = await ticketsResponse.text(); console.error('Erreur:', error); return; } const ticketsData = await ticketsResponse.json(); console.log('✅ Tickets rĂ©cupĂ©rĂ©s avec succĂšs\n'); console.log('━'.repeat(60)); console.log('📊 RÉSULTAT DE L\'API'); console.log('━'.repeat(60)); console.log(` Total de tickets: ${ticketsData.data.tickets.length}`); console.log(` Page: ${ticketsData.data.pagination.page}`); console.log(` Limite: ${ticketsData.data.pagination.limit}`); console.log(` Total: ${ticketsData.data.pagination.total}`); console.log(` Pages totales: ${ticketsData.data.pagination.totalPages}\n`); if (ticketsData.data.tickets.length > 0) { console.log('📋 PREMIERS TICKETS:\n'); ticketsData.data.tickets.slice(0, 5).forEach((ticket, index) => { console.log(`${index + 1}. Code: ${ticket.code}`); console.log(` Statut: ${ticket.status}`); console.log(` Client: ${ticket.user_name} (${ticket.user_email})`); console.log(` Prix: ${ticket.prize_name} (${ticket.prize_type})`); console.log(` JouĂ© le: ${new Date(ticket.played_at).toLocaleString('fr-FR')}`); console.log(''); }); } else { console.log('⚠ Aucun ticket retournĂ© par l\'API\n'); } // Étape 3: Tester avec filtres console.log('3ïžâƒŁ Test avec filtre PENDING...'); const pendingResponse = await fetch(`${API_URL}/admin/tickets?status=PENDING`, { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, }); if (pendingResponse.ok) { const pendingData = await pendingResponse.json(); console.log(`✅ ${pendingData.data.tickets.length} tickets PENDING trouvĂ©s\n`); } // Étape 4: RĂ©cupĂ©rer les statistiques console.log('4ïžâƒŁ RĂ©cupĂ©ration des statistiques...'); const statsResponse = await fetch(`${API_URL}/admin/statistics`, { method: 'GET', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json', }, }); if (statsResponse.ok) { const statsData = await statsResponse.json(); console.log('✅ Statistiques rĂ©cupĂ©rĂ©es\n'); console.log('━'.repeat(60)); console.log('📊 STATISTIQUES'); console.log('━'.repeat(60)); console.log(` Total tickets: ${statsData.data.tickets.total_tickets}`); console.log(` Pending: ${statsData.data.tickets.pending}`); console.log(` Claimed: ${statsData.data.tickets.claimed}`); console.log(` Rejected: ${statsData.data.tickets.rejected}`); console.log('━'.repeat(60)); } console.log('\n✅ Test terminĂ© avec succĂšs!'); console.log('\n💡 Si l\'interface frontend ne montre pas les tickets:'); console.log(' 1. VĂ©rifiez que le frontend appelle la bonne URL'); console.log(' 2. VĂ©rifiez que le token admin est bien envoyĂ©'); console.log(' 3. VĂ©rifiez la console du navigateur pour les erreurs'); console.log(' 4. VĂ©rifiez les CORS si le frontend est sur un autre domaine'); } catch (error) { console.error('❌ Erreur:', error.message); } } testAdminAPI();