mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
79 lines
2.2 KiB
TypeScript
79 lines
2.2 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import {
|
|
registerConnectionToken,
|
|
runDistroDetection,
|
|
} from "./terminalDistroDetection.ts";
|
|
|
|
test("runDistroDetection uses SSH banner but skips POSIX probes for manually marked network devices", async () => {
|
|
let remoteInfoCalls = 0;
|
|
let distroProbeCalls = 0;
|
|
const detected: string[] = [];
|
|
const token = registerConnectionToken("ssh-session");
|
|
|
|
await runDistroDetection({
|
|
host: {
|
|
id: "host-1",
|
|
label: "HPE iLO",
|
|
hostname: "192.168.2.2",
|
|
username: "root",
|
|
deviceType: "network",
|
|
},
|
|
terminalBackend: {
|
|
getSessionRemoteInfo: async () => {
|
|
remoteInfoCalls += 1;
|
|
return { success: true, remoteSshVersion: "SSH-2.0-mpSSH_0.2.1" };
|
|
},
|
|
getSessionDistroInfo: async () => {
|
|
distroProbeCalls += 1;
|
|
return { success: false, error: "network device closed the extra channel" };
|
|
},
|
|
},
|
|
onOsDetected: (_hostId: string, distro: string) => {
|
|
detected.push(distro);
|
|
},
|
|
} as never, "ssh-session", token);
|
|
|
|
assert.equal(remoteInfoCalls, 1);
|
|
assert.equal(distroProbeCalls, 0);
|
|
assert.deepEqual(detected, ["hpe"]);
|
|
});
|
|
|
|
test("runDistroDetection normalizes Darwin probe output to macos", async () => {
|
|
let remoteInfoCalls = 0;
|
|
let distroProbeCalls = 0;
|
|
const detected: string[] = [];
|
|
const token = registerConnectionToken("macos-session");
|
|
|
|
await runDistroDetection({
|
|
host: {
|
|
id: "macos-host",
|
|
label: "Mac mini",
|
|
hostname: "mac-mini.local",
|
|
username: "dev",
|
|
},
|
|
terminalBackend: {
|
|
getSessionRemoteInfo: async () => {
|
|
remoteInfoCalls += 1;
|
|
return { success: true, remoteSshVersion: "SSH-2.0-OpenSSH_9.9" };
|
|
},
|
|
getSessionDistroInfo: async () => {
|
|
distroProbeCalls += 1;
|
|
return {
|
|
success: true,
|
|
stdout: "Darwin mac-mini.local 24.5.0 Darwin Kernel Version 24.5.0\n",
|
|
stderr: "",
|
|
};
|
|
},
|
|
},
|
|
onOsDetected: (_hostId: string, distro: string) => {
|
|
detected.push(distro);
|
|
},
|
|
} as never, "macos-session", token);
|
|
|
|
assert.equal(remoteInfoCalls, 1);
|
|
assert.equal(distroProbeCalls, 1);
|
|
assert.deepEqual(detected, ["macos"]);
|
|
});
|