feat: add streaming end-to-end coverage

This commit is contained in:
a.tolmachev
2026-04-06 12:44:47 +03:00
parent 4953272bcf
commit b5f80c5d2f
7 changed files with 853 additions and 8 deletions
+1
View File
@@ -100,6 +100,7 @@ export CRANK_LOG_LEVEL="info"
export CRANK_SECRET_PROVIDER="env"
export CRANK_SESSION_SECRET="e2e-session-secret"
export CRANK_PASSWORD_PEPPER="e2e-password-pepper"
export CRANK_MASTER_KEY="0000000000000000000000000000000000000000000000000000000000000000"
export CRANK_SESSION_TTL_HOURS="24"
export CRANK_BOOTSTRAP_ADMIN_EMAIL="$ADMIN_EMAIL"
export CRANK_BOOTSTRAP_ADMIN_PASSWORD="$ADMIN_PASSWORD"
+41 -5
View File
@@ -11,13 +11,37 @@ function writeJson(response, status, payload) {
response.end(JSON.stringify(payload));
}
function readJsonBody(request) {
return new Promise((resolve, reject) => {
let buffer = '';
request.setEncoding('utf8');
request.on('data', (chunk) => {
buffer += chunk;
});
request.on('end', () => {
if (!buffer) {
resolve({});
return;
}
try {
resolve(JSON.parse(buffer));
} catch (error) {
reject(error);
}
});
request.on('error', reject);
});
}
const server = http.createServer((request, response) => {
if (request.url === '/health') {
const url = new URL(request.url, `http://127.0.0.1:${PORT}`);
if (url.pathname === '/health') {
writeJson(response, 200, { ok: true });
return;
}
if (request.url === '/sse/logs') {
if (url.pathname === '/sse/logs') {
response.writeHead(200, {
'Content-Type': 'text/event-stream; charset=utf-8',
'Cache-Control': 'no-cache',
@@ -33,8 +57,6 @@ const server = http.createServer((request, response) => {
let index = 0;
const timer = setInterval(() => {
if (index >= events.length) {
response.write('event: done\n');
response.write('data: {"done":true}\n\n');
clearInterval(timer);
response.end();
return;
@@ -52,7 +74,7 @@ const server = http.createServer((request, response) => {
return;
}
if (request.url === '/snapshot/metrics') {
if (url.pathname === '/snapshot/metrics') {
writeJson(response, 200, {
summary: {
service: 'billing',
@@ -67,6 +89,20 @@ const server = http.createServer((request, response) => {
return;
}
if (url.pathname === '/crm/leads' && request.method === 'POST') {
readJsonBody(request)
.then((payload) => {
writeJson(response, 200, {
id: 'lead_123',
email: payload.email || null,
});
})
.catch(() => {
writeJson(response, 400, { error: 'invalid_json' });
});
return;
}
writeJson(response, 404, { error: 'not_found' });
});