123 lines
3.4 KiB
JavaScript
123 lines
3.4 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import {
|
|
buildBossAgentStatus,
|
|
renderBossAgentHtml,
|
|
renderBossAgentHtmlWithQr,
|
|
} from "../local-agent/boss-agent-status.mjs";
|
|
|
|
test("boss-agent status exposes unbound QR binding and local permission states", () => {
|
|
const status = buildBossAgentStatus(
|
|
{
|
|
deviceId: "macbook-air",
|
|
name: "MacBook Air",
|
|
avatar: "A",
|
|
account: "",
|
|
controlPlaneUrl: "https://boss.hyzq.net",
|
|
pairingCode: "482913",
|
|
token: "",
|
|
primaryApiLabel: "DeepSeek V4",
|
|
backupApiLabel: "未启用",
|
|
licenseExpiresAt: "2027-05-12T00:00:00.000Z",
|
|
},
|
|
{
|
|
lastHeartbeatOk: true,
|
|
lastHeartbeatStatus: 200,
|
|
lastHeartbeatAt: "2026-05-12T05:00:00.000Z",
|
|
},
|
|
{
|
|
permissions: {
|
|
accessibility: "granted",
|
|
screenRecording: "missing",
|
|
automation: "unknown",
|
|
},
|
|
now: "2026-05-12T06:00:00.000Z",
|
|
},
|
|
);
|
|
|
|
assert.equal(status.appName, "boss-agent");
|
|
assert.equal(status.binding.bound, false);
|
|
assert.equal(status.binding.qrPayload.includes("pairingCode=482913"), true);
|
|
assert.equal(status.server.ok, true);
|
|
assert.equal(status.api.primary, "DeepSeek V4");
|
|
assert.equal(status.api.backup, "未启用");
|
|
assert.equal(status.license.status, "pending_binding");
|
|
assert.deepEqual(
|
|
status.permissions.items.map((item) => [item.key, item.status]),
|
|
[
|
|
["accessibility", "granted"],
|
|
["screenRecording", "missing"],
|
|
["automation", "unknown"],
|
|
],
|
|
);
|
|
});
|
|
|
|
test("boss-agent status treats token-backed devices as bound and renders enterprise UI", () => {
|
|
const status = buildBossAgentStatus(
|
|
{
|
|
deviceId: "mac-studio",
|
|
name: "Mac Studio",
|
|
avatar: "M",
|
|
account: "krisolo",
|
|
controlPlaneUrl: "https://boss.hyzq.net",
|
|
token: "boss-secret-token",
|
|
primaryApiLabel: "DeepSeek V4",
|
|
backupApiLabel: "OpenAI 备用",
|
|
license: {
|
|
enterpriseName: "默认公司",
|
|
status: "valid",
|
|
expiresAt: "2027-05-12T00:00:00.000Z",
|
|
},
|
|
},
|
|
{
|
|
lastHeartbeatOk: true,
|
|
lastHeartbeatStatus: 200,
|
|
lastHeartbeatAt: "2026-05-12T05:00:00.000Z",
|
|
},
|
|
{
|
|
permissions: {
|
|
accessibility: "granted",
|
|
screenRecording: "granted",
|
|
automation: "granted",
|
|
},
|
|
now: "2026-05-12T06:00:00.000Z",
|
|
},
|
|
);
|
|
|
|
assert.equal(status.binding.bound, true);
|
|
assert.equal(status.binding.account, "krisolo");
|
|
assert.equal(status.license.status, "valid");
|
|
assert.equal(status.license.enterpriseName, "默认公司");
|
|
|
|
const html = renderBossAgentHtml(status);
|
|
assert.match(html, /boss-agent/);
|
|
assert.match(html, /企业电脑接入端/);
|
|
assert.match(html, /本机电脑权限状态/);
|
|
assert.match(html, /DeepSeek V4/);
|
|
assert.match(html, /默认公司/);
|
|
assert.doesNotMatch(html, /boss-secret-token/);
|
|
});
|
|
|
|
test("boss-agent unbound HTML renders a real scannable QR image when qrcode is available", async () => {
|
|
const status = buildBossAgentStatus(
|
|
{
|
|
deviceId: "macbook-air",
|
|
name: "MacBook Air",
|
|
controlPlaneUrl: "https://boss.hyzq.net",
|
|
pairingCode: "482913",
|
|
},
|
|
{
|
|
lastHeartbeatOk: true,
|
|
lastHeartbeatStatus: 200,
|
|
},
|
|
{
|
|
permissions: {},
|
|
},
|
|
);
|
|
|
|
const html = await renderBossAgentHtmlWithQr(status);
|
|
assert.match(html, /data:image\/png;base64/);
|
|
assert.match(html, /Boss APP 绑定二维码/);
|
|
});
|