add changes

This commit is contained in:
AD2025
2025-12-25 00:24:11 +02:00
parent 079c10e843
commit efb4f69e20
64 changed files with 576 additions and 568 deletions

View File

@@ -0,0 +1,215 @@
const axios = require('axios');
const BASE_URL = 'http://localhost:3000/api';
console.log('Testing Error Handling & Logging\n');
console.log('='.repeat(50));
async function testErrorHandling() {
const tests = [
{
name: '404 Not Found',
test: async () => {
try {
await axios.get(`${BASE_URL}/nonexistent-route`);
return { success: false, message: 'Should have thrown 404' };
} catch (error) {
if (error.response?.status === 404) {
return {
success: true,
message: `✓ 404 handled correctly: ${error.response.data.message}`
};
}
return { success: false, message: `✗ Unexpected error: ${error.message}` };
}
}
},
{
name: '401 Unauthorized (No Token)',
test: async () => {
try {
await axios.get(`${BASE_URL}/auth/verify`);
return { success: false, message: 'Should have thrown 401' };
} catch (error) {
if (error.response?.status === 401) {
return {
success: true,
message: `✓ 401 handled correctly: ${error.response.data.message}`
};
}
return { success: false, message: `✗ Unexpected error: ${error.message}` };
}
}
},
{
name: '401 Unauthorized (Invalid Token)',
test: async () => {
try {
await axios.get(`${BASE_URL}/auth/verify`, {
headers: { 'Authorization': 'Bearer invalid-token' }
});
return { success: false, message: 'Should have thrown 401' };
} catch (error) {
if (error.response?.status === 401) {
return {
success: true,
message: `✓ 401 handled correctly: ${error.response.data.message}`
};
}
return { success: false, message: `✗ Unexpected error: ${error.message}` };
}
}
},
{
name: '400 Bad Request (Missing Required Fields)',
test: async () => {
try {
await axios.post(`${BASE_URL}/auth/register`, {
username: 'test'
// missing email and password
});
return { success: false, message: 'Should have thrown 400' };
} catch (error) {
if (error.response?.status === 400) {
return {
success: true,
message: `✓ 400 handled correctly: ${error.response.data.message}`
};
}
return { success: false, message: `✗ Unexpected error: ${error.message}` };
}
}
},
{
name: '400 Bad Request (Invalid Email)',
test: async () => {
try {
await axios.post(`${BASE_URL}/auth/register`, {
username: 'testuser123',
email: 'invalid-email',
password: 'password123'
});
return { success: false, message: 'Should have thrown 400' };
} catch (error) {
if (error.response?.status === 400) {
return {
success: true,
message: `✓ 400 handled correctly: ${error.response.data.message}`
};
}
return { success: false, message: `✗ Unexpected error: ${error.message}` };
}
}
},
{
name: 'Health Check (Success)',
test: async () => {
try {
const response = await axios.get('http://localhost:3000/health');
if (response.status === 200 && response.data.status === 'OK') {
return {
success: true,
message: `✓ Health check passed: ${response.data.message}`
};
}
return { success: false, message: '✗ Health check failed' };
} catch (error) {
return { success: false, message: `✗ Health check error: ${error.message}` };
}
}
},
{
name: 'Successful Login Flow',
test: async () => {
try {
// First, try to register a test user
const timestamp = Date.now();
const testUser = {
username: `errortest${timestamp}`,
email: `errortest${timestamp}@example.com`,
password: 'password123'
};
await axios.post(`${BASE_URL}/auth/register`, testUser);
// Then login
const loginResponse = await axios.post(`${BASE_URL}/auth/login`, {
email: testUser.email,
password: testUser.password
});
if (loginResponse.status === 200 && loginResponse.data.token) {
return {
success: true,
message: `✓ Login successful, token received`
};
}
return { success: false, message: '✗ Login failed' };
} catch (error) {
if (error.response?.status === 409) {
// User already exists, try logging in
return {
success: true,
message: `✓ Validation working (user exists)`
};
}
return { success: false, message: `✗ Error: ${error.message}` };
}
}
},
{
name: 'Check Logs Directory',
test: async () => {
const fs = require('fs');
const path = require('path');
const logsDir = path.join(__dirname, 'logs');
if (fs.existsSync(logsDir)) {
const files = fs.readdirSync(logsDir);
if (files.length > 0) {
return {
success: true,
message: `✓ Logs directory exists with ${files.length} file(s): ${files.join(', ')}`
};
}
return {
success: true,
message: `✓ Logs directory exists (empty)`
};
}
return { success: false, message: '✗ Logs directory not found' };
}
}
];
let passed = 0;
let failed = 0;
for (const test of tests) {
console.log(`\n${test.name}:`);
try {
const result = await test.test();
console.log(` ${result.message}`);
if (result.success) passed++;
else failed++;
} catch (error) {
console.log(` ✗ Test error: ${error.message}`);
failed++;
}
}
console.log('\n' + '='.repeat(50));
console.log(`\nTest Results: ${passed}/${tests.length} passed, ${failed} failed`);
if (failed === 0) {
console.log('\n✅ All error handling tests passed!');
} else {
console.log(`\n⚠️ Some tests failed. Check the logs for details.`);
}
}
// Run tests
testErrorHandling().catch(error => {
console.error('Fatal error:', error);
process.exit(1);
});