Files
remoteconn-gitea/apps/miniprogram/pages/terminal/terminalSessionInfo.test.ts
2026-03-21 18:57:10 +08:00

131 lines
3.6 KiB
TypeScript

import { describe, expect, it } from "vitest";
const { buildTerminalServerAddress, buildTerminalSessionInfoModel } = require("./terminalSessionInfo.js");
describe("terminalSessionInfo", () => {
it("启用跳转主机后会把链路信息收敛到 hero 区并保留连接状态", () => {
const model = buildTerminalSessionInfoModel({
serverLabel: "prod-shell",
statusText: "connected",
activeAiProvider: "codex",
server: {
name: "生产环境",
username: "deploy",
host: "10.0.0.8",
port: 22,
projectPath: "/srv/apps/remoteconn",
jumpHost: {
enabled: true,
username: "bastion",
host: "10.0.0.2",
port: 2222
}
},
copy: {
sessionInfo: {
title: "会话信息",
nameLabel: "服务器名称",
projectLabel: "工作目录",
addressLabel: "服务器地址",
jumpTargetLabel: "跳至服务器",
sshConnectionLabel: "SSH连接",
aiConnectionLabel: "AI连接",
connectedValue: "连接",
disconnectedValue: "断开"
},
fallback: {
noProject: "未设置项目",
unnamedServer: "未命名服务器"
}
}
});
expect(model.title).toBe("会话信息");
expect(model.hero).toEqual({
eyebrow: "双跳通道",
name: "生产环境",
subtitle: "bastion@10.0.0.2:2222",
routeLabel: "跳至服务器",
route: "deploy@10.0.0.8:22"
});
expect(model.statusChips).toEqual([
{
key: "sshConnection",
label: "SSH连接",
value: "连接",
badge: "LIVE",
note: "终端链路已就绪",
connected: true
},
{
key: "aiConnection",
label: "AI连接",
value: "连接",
badge: "Codex",
note: "Codex 正在前台",
connected: true
}
]);
expect(model.detailItems).toEqual([
{ key: "project", accent: "目录", label: "工作目录", value: "/srv/apps/remoteconn", wide: true }
]);
});
it("缺失配置时会回退到本地文案和断开状态", () => {
const model = buildTerminalSessionInfoModel({
serverLabel: "",
statusText: "disconnected",
activeAiProvider: "",
server: {
username: "",
host: "",
port: "",
projectPath: ""
},
copy: {
sessionInfo: {
sshConnectionLabel: "SSH连接",
aiConnectionLabel: "AI连接",
connectedValue: "连接",
disconnectedValue: "断开",
emptyValue: "--"
},
fallback: {
noProject: "未设置项目",
unnamedServer: "未命名服务器"
}
}
});
expect(model.hero).toEqual({
eyebrow: "直连通道",
name: "未命名服务器",
subtitle: "--",
routeLabel: "跳至服务器",
route: ""
});
expect(model.statusChips).toEqual([
{
key: "sshConnection",
label: "SSH连接",
value: "断开",
badge: "IDLE",
note: "等待重新建立",
connected: false
},
{
key: "aiConnection",
label: "AI连接",
value: "断开",
badge: "STANDBY",
note: "尚未接管终端",
connected: false
}
]);
expect(model.detailItems).toEqual([
{ key: "project", accent: "目录", label: "工作目录", value: "未设置项目", wide: true }
]);
expect(buildTerminalServerAddress({ host: "srv.example.com", port: 2200 })).toBe("srv.example.com:2200");
});
});