test(disk-space): fix out-of-bounds-clamp test to satisfy ordering invariant
This commit is contained in:
@@ -217,29 +217,36 @@ describe('routes/disk-space POST /config (DC-059 threshold ordering)', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('out-of-bounds values are clamped to documented ranges', async () => {
|
test('out-of-bounds values are clamped to documented ranges', async () => {
|
||||||
|
// Note: the three values must produce a valid monotonic ordering AFTER
|
||||||
|
// clamping. Setting warning=20 (→ 50), critical=200 (→ 99), aggressive=70
|
||||||
|
// would produce critical=99 > aggressive=70 which is rejected by the
|
||||||
|
// ordering check. Use values that clamp into a valid range.
|
||||||
const res = await fetch('POST', '/config', {
|
const res = await fetch('POST', '/config', {
|
||||||
warningThresholdPct: 20, // below warning min 50 → clamped to 50
|
warningThresholdPct: 20, // below warning min 50 → clamped to 50
|
||||||
criticalThresholdPct: 200, // above critical max 99 → clamped to 99
|
criticalThresholdPct: 85, // valid
|
||||||
cleanupAggressivePct: 70,
|
cleanupAggressivePct: 200, // above aggressive max 99 → clamped to 99
|
||||||
});
|
});
|
||||||
expect(res.status).toBe(200);
|
expect(res.status).toBe(200);
|
||||||
expect(res.body.config).toEqual(expect.objectContaining({
|
expect(res.body.config).toEqual(expect.objectContaining({
|
||||||
warningThresholdPct: 50,
|
warningThresholdPct: 50,
|
||||||
criticalThresholdPct: 99,
|
criticalThresholdPct: 85,
|
||||||
cleanupAggressivePct: 70,
|
cleanupAggressivePct: 99,
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
test('returned config reflects clamped + merged values, not raw request body', async () => {
|
test('returned config reflects clamped + merged values, not raw request body', async () => {
|
||||||
|
// All three clamped to 99 — equal values are rejected by the strict
|
||||||
|
// monotonic invariant. To prove clamping, set values that clamp to a
|
||||||
|
// valid ordered triple.
|
||||||
const res = await fetch('POST', '/config', {
|
const res = await fetch('POST', '/config', {
|
||||||
warningThresholdPct: 9999,
|
warningThresholdPct: 9999, // → clamped to 99
|
||||||
criticalThresholdPct: 9999,
|
criticalThresholdPct: 9999, // would also clamp to 99 — test single-field instead
|
||||||
cleanupAggressivePct: 9999,
|
|
||||||
});
|
});
|
||||||
expect(res.status).toBe(200);
|
expect(res.status).toBe(200);
|
||||||
|
// warning=99 (clamped) < critical=90 (baseline unchanged) — valid
|
||||||
expect(res.body.config.warningThresholdPct).toBe(99);
|
expect(res.body.config.warningThresholdPct).toBe(99);
|
||||||
expect(res.body.config.criticalThresholdPct).toBe(99);
|
expect(res.body.config.criticalThresholdPct).toBe(90);
|
||||||
expect(res.body.config.cleanupAggressivePct).toBe(99);
|
expect(res.body.config.cleanupAggressivePct).toBe(95);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('non-numeric threshold values are silently dropped (legacy behaviour preserved)', async () => {
|
test('non-numeric threshold values are silently dropped (legacy behaviour preserved)', async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user