exotec-error-server
Version:
Serveur de simulation d'erreurs HTTP pour tests Exotec
101 lines • 3.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setServerErrorMode = setServerErrorMode;
exports.getServerToCatchAnswer = getServerToCatchAnswer;
exports.getCapturedRequests = getCapturedRequests;
exports.clearCapturedRequests = clearCapturedRequests;
const http_1 = require("http");
let serverErrorMode = null;
let captureRequests = [];
function handleIncomingData(urlWherePosted, data) {
if (urlWherePosted.startsWith('/cont')) {
// Handle cont requests
}
else if (urlWherePosted.startsWith('/inb')) {
// Handle inb requests
}
else if (urlWherePosted.startsWith('/outb')) {
// Handle outb requests
}
else if (urlWherePosted.startsWith('/ext')) {
// Handle ext requests
}
else if (urlWherePosted.startsWith('/pick')) {
// Handle pick requests
}
else {
captureRequests.push({
url: urlWherePosted,
load: data,
});
}
}
function setServerErrorMode(errorCode) {
serverErrorMode = errorCode;
if (errorCode === 0 || errorCode === null) {
console.log(`🔧 Mode serveur défini sur: NORMAL (pas d'erreur)`);
}
else {
console.log(`🔧 Mode d'erreur serveur défini sur: ${errorCode}`);
}
}
function getServerToCatchAnswer() {
const server = (0, http_1.createServer)((req, res) => {
if (req.method === 'POST') {
let body = '';
req.on('data', chunk => {
body += chunk;
});
req.on('end', () => {
try {
const jsonData = JSON.parse(body);
// Vérifier si on doit simuler une erreur
if (serverErrorMode && serverErrorMode !== 0) {
console.log(`💥 Simulation d'erreur ${serverErrorMode} pour ${req.url}`);
switch (serverErrorMode) {
case 502:
res.writeHead(502, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Bad Gateway' }));
break;
case 503:
res.writeHead(503, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Service Unavailable' }));
break;
case 504:
res.writeHead(504, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'Gateway Timeout' }));
break;
default:
// Mode normal
handleIncomingData(req.url, jsonData);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'ok', received: jsonData }));
}
return;
}
// Mode normal - pas d'erreur simulée
console.log(`✅ Traitement normal pour ${req.url}`);
handleIncomingData(req.url, jsonData);
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'ok', received: jsonData }));
}
catch (err) {
res.writeHead(400, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ error: 'JSON invalide' }));
}
});
}
else {
res.writeHead(404);
res.end();
}
});
return server;
}
function getCapturedRequests() {
return captureRequests;
}
function clearCapturedRequests() {
captureRequests = [];
}
//# sourceMappingURL=catchAnswer.js.map