mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
63 lines
2.3 KiB
TypeScript
63 lines
2.3 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import type { TerminalSession } from "../../domain/models";
|
|
import {
|
|
canReuseTerminalConnection,
|
|
createCopiedTerminalSessionClone,
|
|
createSplitTerminalSessionClone,
|
|
} from "./terminalConnectionReuse";
|
|
|
|
const session = (overrides: Partial<TerminalSession> = {}): TerminalSession => ({
|
|
id: "session-1",
|
|
hostId: "host-1",
|
|
hostLabel: "Host",
|
|
hostname: "example.com",
|
|
username: "alice",
|
|
status: "connected",
|
|
protocol: "ssh",
|
|
...overrides,
|
|
});
|
|
|
|
test("connected SSH sessions can reuse their authenticated connection", () => {
|
|
assert.equal(canReuseTerminalConnection(session()), true);
|
|
assert.equal(canReuseTerminalConnection(session({ protocol: undefined })), true);
|
|
});
|
|
|
|
test("non-SSH or unavailable sessions do not reuse a connection", () => {
|
|
assert.equal(canReuseTerminalConnection(session({ status: "connecting" })), false);
|
|
assert.equal(canReuseTerminalConnection(session({ status: "disconnected" })), false);
|
|
assert.equal(canReuseTerminalConnection(session({ protocol: "local" })), false);
|
|
assert.equal(canReuseTerminalConnection(session({ protocol: "serial" })), false);
|
|
assert.equal(canReuseTerminalConnection(session({ protocol: "telnet" })), false);
|
|
assert.equal(canReuseTerminalConnection(session({ moshEnabled: true })), false);
|
|
assert.equal(canReuseTerminalConnection(session({ etEnabled: true })), false);
|
|
});
|
|
|
|
test("split session clones reuse only connected SSH sources", () => {
|
|
assert.equal(
|
|
createSplitTerminalSessionClone(session(), { id: "split-1", workspaceId: "workspace-1" }).reuseConnectionFromSessionId,
|
|
"session-1",
|
|
);
|
|
assert.equal(
|
|
createSplitTerminalSessionClone(session({ etEnabled: true }), { id: "split-2" }).reuseConnectionFromSessionId,
|
|
undefined,
|
|
);
|
|
assert.equal(
|
|
createSplitTerminalSessionClone(session({ moshEnabled: true }), { id: "split-3" }).reuseConnectionFromSessionId,
|
|
undefined,
|
|
);
|
|
});
|
|
|
|
test("copy session clones reuse SSH sources and preserve serial config", () => {
|
|
const copied = createCopiedTerminalSessionClone(
|
|
session({
|
|
serialConfig: { path: "/dev/tty.usbserial", baudRate: 115200 },
|
|
}),
|
|
{ id: "copy-1" },
|
|
);
|
|
|
|
assert.equal(copied.reuseConnectionFromSessionId, "session-1");
|
|
assert.deepEqual(copied.serialConfig, { path: "/dev/tty.usbserial", baudRate: 115200 });
|
|
});
|