the-tip-top-backend/scripts/test-admin-api.js
2025-11-17 23:47:54 +01:00

131 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();