import mongoose from 'mongoose'; import axios from 'axios'; import dotenv from 'dotenv'; dotenv.config(); const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/turbotrades'; const API_URL = 'http://localhost:3000'; async function testTransactions() { try { console.log('šŸ”Œ Connecting to MongoDB...'); await mongoose.connect(MONGODB_URI); console.log('āœ… Connected to MongoDB\n'); // Import models const User = (await import('./models/User.js')).default; const Transaction = (await import('./models/Transaction.js')).default; const Session = (await import('./models/Session.js')).default; // Find the user console.log('šŸ‘¤ Finding user...'); const user = await User.findOne().sort({ createdAt: -1 }); if (!user) { console.error('āŒ No user found!'); process.exit(1); } console.log(`āœ… Found user: ${user.username}`); console.log(` User ID: ${user._id}`); console.log(` Steam ID: ${user.steamId}\n`); // Check transactions in DB console.log('šŸ’° Checking transactions in database...'); const dbTransactions = await Transaction.find({ userId: user._id }).sort({ createdAt: -1 }); console.log(`āœ… Found ${dbTransactions.length} transactions in DB`); if (dbTransactions.length > 0) { console.log('\nšŸ“‹ Sample transactions:'); dbTransactions.slice(0, 5).forEach((t, i) => { console.log(` ${i + 1}. ${t.type.padEnd(12)} $${t.amount.toFixed(2).padStart(8)} - Session: ${t.sessionIdShort || 'NONE'}`); }); } else { console.log('āš ļø No transactions found for this user!'); console.log('šŸ’” Run: node seed-transactions.js'); } // Check sessions console.log('\nšŸ” Checking sessions...'); const sessions = await Session.find({ userId: user._id, isActive: true }); console.log(`āœ… Found ${sessions.length} active sessions`); sessions.forEach((s, i) => { console.log(` ${i + 1}. ${s.browser || 'Unknown'} on ${s.os || 'Unknown'} (...${s._id.toString().slice(-6)})`); }); // Check if we can get a valid session token console.log('\nšŸ”‘ Testing API authentication...'); if (sessions.length > 0) { const session = sessions[0]; console.log(` Using session: ${session._id}`); console.log(` Token: ${session.token.substring(0, 20)}...`); try { // Test the transactions endpoint console.log('\nšŸ“” Testing /api/user/transactions endpoint...'); const response = await axios.get(`${API_URL}/api/user/transactions`, { headers: { 'Cookie': `token=${session.token}` }, withCredentials: true }); if (response.data.success) { console.log('āœ… API request successful!'); console.log(` Returned ${response.data.transactions.length} transactions`); console.log(` Stats:`, response.data.stats); if (response.data.transactions.length > 0) { console.log('\nšŸ“Š Sample API transactions:'); response.data.transactions.slice(0, 3).forEach((t, i) => { console.log(` ${i + 1}. ${t.type.padEnd(12)} $${t.amount.toFixed(2).padStart(8)} - Session: ${t.sessionIdShort || 'NONE'}`); }); } } else { console.log('āš ļø API returned success: false'); } } catch (apiError) { console.error('āŒ API request failed:', apiError.message); if (apiError.response) { console.error(' Status:', apiError.response.status); console.error(' Data:', apiError.response.data); } } } else { console.log('āš ļø No active sessions found. Cannot test API.'); console.log('šŸ’” Log in via Steam to create a session'); } console.log('\n' + '='.repeat(60)); console.log('āœ… Test complete!'); console.log('='.repeat(60)); } catch (error) { console.error('\nāŒ Error during test:', error); process.exit(1); } finally { await mongoose.disconnect(); console.log('\nšŸ”Œ Disconnected from MongoDB'); process.exit(0); } } testTransactions();