mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-17 12:42:21 +03:00
feat(homolog): L0 avaliador de paridade de deploy (TDD)
This commit is contained in:
15
scripts/homolog/lib/parity.mjs
Normal file
15
scripts/homolog/lib/parity.mjs
Normal file
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
* Avaliação pura de paridade do deploy (testável sem rede).
|
||||
* @param {{status?: string, version?: string}} health corpo de /api/monitoring/health
|
||||
* @param {{expectedVersion: string, httpStatus: number}} ctx
|
||||
* @returns {{ok: boolean, failures: string[]}}
|
||||
*/
|
||||
export function evaluateParity(health, ctx) {
|
||||
const failures = [];
|
||||
if (ctx.httpStatus !== 200) failures.push(`health HTTP ${ctx.httpStatus} (esperado 200)`);
|
||||
if (health?.status !== "healthy")
|
||||
failures.push(`status "${health?.status}" (esperado "healthy")`);
|
||||
if (health?.version !== ctx.expectedVersion)
|
||||
failures.push(`version "${health?.version}" (esperado "${ctx.expectedVersion}")`);
|
||||
return { ok: failures.length === 0, failures };
|
||||
}
|
||||
29
tests/unit/homolog-parity.test.ts
Normal file
29
tests/unit/homolog-parity.test.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { test } from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { evaluateParity } from "../../scripts/homolog/lib/parity.mjs";
|
||||
|
||||
test("parity OK quando health bate com a versão esperada", () => {
|
||||
const r = evaluateParity(
|
||||
{ status: "healthy", version: "3.8.49" },
|
||||
{ expectedVersion: "3.8.49", httpStatus: 200 }
|
||||
);
|
||||
assert.equal(r.ok, true);
|
||||
assert.deepEqual(r.failures, []);
|
||||
});
|
||||
|
||||
test("parity falha listando cada divergência", () => {
|
||||
const r = evaluateParity(
|
||||
{ status: "degraded", version: "3.8.47" },
|
||||
{ expectedVersion: "3.8.49", httpStatus: 200 }
|
||||
);
|
||||
assert.equal(r.ok, false);
|
||||
assert.equal(r.failures.length, 2); // status!=healthy, version mismatch
|
||||
});
|
||||
|
||||
test("parity falha em HTTP não-200 mesmo com body bom", () => {
|
||||
const r = evaluateParity(
|
||||
{ status: "healthy", version: "3.8.49" },
|
||||
{ expectedVersion: "3.8.49", httpStatus: 503 }
|
||||
);
|
||||
assert.equal(r.ok, false);
|
||||
});
|
||||
Reference in New Issue
Block a user