#!/usr/bin/env node /** * Test audit logs endpoint */ require('dotenv').config(); const fetch = require('node-fetch'); const { generateToken } = require('../src/utils/jwt.util'); const mongoose = require('mongoose'); async function testAudit() { try { // Connect to get admin user await mongoose.connect(process.env.MONGODB_URI || 'mongodb://localhost:27017/tractatus_dev'); const User = mongoose.model('User', new mongoose.Schema({}, { strict: false, collection: 'users' })); const adminUser = await User.findOne({ role: 'admin' }); if (!adminUser) { console.error('✗ No admin user found'); process.exit(1); } const token = generateToken({ userId: adminUser._id.toString(), role: 'admin' }); console.log('Testing audit logs endpoints...\n'); // Test with 7 days (default) console.log('1. GET /api/admin/audit-logs (default 7 days)'); let response = await fetch('http://localhost:9000/api/admin/audit-logs', { headers: { 'Authorization': `Bearer ${token}` } }); let data = await response.json(); console.log(` Status: ${response.status}`); console.log(` Results: ${data.decisions ? data.decisions.length : 0} decisions`); console.log(` Date range: ${data.dateRange ? data.dateRange.start.split('T')[0] : 'N/A'} to ${data.dateRange ? data.dateRange.end.split('T')[0] : 'N/A'}\n`); // Test with 30 days console.log('2. GET /api/admin/audit-logs?days=30'); response = await fetch('http://localhost:9000/api/admin/audit-logs?days=30', { headers: { 'Authorization': `Bearer ${token}` } }); data = await response.json(); console.log(` Status: ${response.status}`); console.log(` Results: ${data.decisions ? data.decisions.length : 0} decisions`); console.log(` Date range: ${data.dateRange ? data.dateRange.start.split('T')[0] : 'N/A'} to ${data.dateRange ? data.dateRange.end.split('T')[0] : 'N/A'}`); if (data.decisions && data.decisions.length > 0) { console.log(` ✓ Data available from: ${data.decisions[0].timestamp.split('T')[0]}`); } else { console.log(` ✗ No data found`); } await mongoose.disconnect(); } catch (error) { console.error('✗ Test failed:', error.message); process.exit(1); } } testAudit();