Files
Void-Homelab/tests/health/checker.test.js
2026-06-02 22:55:03 +10:00

20 lines
1.0 KiB
JavaScript

import { describe, it, expect, vi } from 'vitest';
import { classify, checkAll } from '../../lib/health/checker.js';
describe('health classify', () => {
it('ok when reachable and fast', () => expect(classify({ ok: true, latency: 120 }).status).toBe('ok'));
it('warn when reachable but slow', () => expect(classify({ ok: true, latency: 4000 }).status).toBe('warn'));
it('warn on non-2xx/3xx reachable', () => expect(classify({ ok: false, reachable: true, latency: 50 }).status).toBe('warn'));
it('down when unreachable', () => expect(classify({ ok: false, reachable: false, error: 'ECONN' }).status).toBe('down'));
});
describe('checkAll', () => {
it('probes each service and returns a status per id', async () => {
const probe = vi.fn().mockResolvedValue({ ok: true, latency: 30 });
const svcs = [{ id: 'a', url: 'http://x' }, { id: 'b', url: 'http://y' }];
const out = await checkAll(svcs, probe);
expect(out.map(o => o.service_id).sort()).toEqual(['a', 'b']);
expect(out.every(o => o.status === 'ok')).toBe(true);
});
});