44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
import { runExec } from "../process/exec.js";
|
|
import { readSystemdUserLingerStatus } from "./systemd.js";
|
|
|
|
vi.mock("../process/exec.js", () => ({
|
|
runExec: vi.fn(),
|
|
runCommandWithTimeout: vi.fn(),
|
|
}));
|
|
|
|
const runExecMock = vi.mocked(runExec);
|
|
|
|
describe("readSystemdUserLingerStatus", () => {
|
|
beforeEach(() => {
|
|
runExecMock.mockReset();
|
|
});
|
|
|
|
it("returns yes when loginctl reports Linger=yes", async () => {
|
|
runExecMock.mockResolvedValue({
|
|
stdout: "Linger=yes\n",
|
|
stderr: "",
|
|
});
|
|
const result = await readSystemdUserLingerStatus({ USER: "tobi" });
|
|
expect(result).toEqual({ user: "tobi", linger: "yes" });
|
|
});
|
|
|
|
it("returns no when loginctl reports Linger=no", async () => {
|
|
runExecMock.mockResolvedValue({
|
|
stdout: "Linger=no\n",
|
|
stderr: "",
|
|
});
|
|
const result = await readSystemdUserLingerStatus({ USER: "tobi" });
|
|
expect(result).toEqual({ user: "tobi", linger: "no" });
|
|
});
|
|
|
|
it("returns null when Linger is missing", async () => {
|
|
runExecMock.mockResolvedValue({
|
|
stdout: "UID=1000\n",
|
|
stderr: "",
|
|
});
|
|
const result = await readSystemdUserLingerStatus({ USER: "tobi" });
|
|
expect(result).toBeNull();
|
|
});
|
|
});
|