UNPKG

exotec-error-server

Version:

Serveur de simulation d'erreurs HTTP pour tests Exotec

101 lines 3.99 kB
"use strict"; 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