Files
Termix/src/backend/hosts/metrics/host-status.test.ts
T

41 lines
1.3 KiB
TypeScript
Raw Normal View History

+5
2026-08-19 14:12:06 -05:00
import { describe, expect, it } from "vitest";
import {
+17
2026-09-20 14:56:39 -05:00
isHostKeyVerificationError,
+5
2026-08-19 14:12:06 -05:00
statusAfterAuthentication,
statusAfterReachabilityCheck,
} from "./host-status.js";
+17
2026-09-20 14:56:39 -05:00
describe("isHostKeyVerificationError", () => {
it.each([
"Host denied (verification failed)",
"Host key changed - please connect via Terminal to verify the new key",
])("classifies %s", (message) => {
expect(isHostKeyVerificationError(new Error(message))).toBe(true);
});
it("does not classify ordinary authentication failures", () => {
expect(isHostKeyVerificationError(new Error("Permission denied"))).toBe(
false,
);
});
});
+5
2026-08-19 14:12:06 -05:00
describe("host availability status", () => {
it("does not call a TCP-reachable host online before authentication", () => {
expect(statusAfterReachabilityCheck(true)).toBe("reachable");
});
it("keeps a verified host online across later reachability checks", () => {
expect(statusAfterReachabilityCheck(true, "online")).toBe("online");
});
it("marks successful authentication online", () => {
expect(statusAfterAuthentication(true, "reachable")).toBe("online");
});
it("downgrades failed authentication without hiding reachability", () => {
expect(statusAfterAuthentication(false, "online")).toBe("reachable");
expect(statusAfterAuthentication(false, "offline")).toBe("offline");
});
});