// server/services/machines.test.ts import { describe, it, expect, vi } from "vitest"; // Mock all modules with side-effects at import time (DB, SSH, crypto) vi.mock("../db/client.js", () => ({ db: {}, schema: { machines: {} } })); vi.mock("../crypto/secrets.js", () => ({ encryptSecret: vi.fn(), decryptSecret: vi.fn() })); vi.mock("../env.js", () => ({ env: { requireMasterKey: vi.fn(), reportsDir: "/tmp" } })); vi.mock("../ssh/client.js", () => ({ runPlain: vi.fn() })); import { parseOsRelease } from "./machines.js"; describe("parseOsRelease", () => { it("détecte Debian", () => { const r = parseOsRelease('ID=debian\nVERSION_ID="11"\nPRETTY_NAME="Debian 11"'); expect(r).toEqual({ family: "debian", version: "11" }); }); it("détecte Ubuntu", () => { const r = parseOsRelease('ID=ubuntu\nVERSION_ID="22.04"'); expect(r).toEqual({ family: "ubuntu", version: "22.04" }); }); it("retombe sur unknown", () => { expect(parseOsRelease("ID=arch").family).toBe("unknown"); }); });