131 lines
4.7 KiB
JavaScript
131 lines
4.7 KiB
JavaScript
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();
|