Files
boss/tests/boss-agent-status.test.mjs
2026-05-12 23:39:13 +08:00

223 lines
8.1 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
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",
lastSkills: [
{ name: "bb-browser", category: "MacBook Air", path: "/Users/jas/.codex/skills/bb-browser/SKILL.md" },
{ name: "skill-installer", category: ".system", path: "/Users/jas/.codex/skills/.system/skill-installer/SKILL.md" },
],
lastSkillSyncOk: true,
lastSkillSyncAt: "2026-05-12T05:30: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.equal(status.skills.total, 2);
assert.equal(status.skills.syncOk, true);
assert.equal(status.permissionReadiness.coreReady, false);
assert.equal(status.permissionReadiness.fullControlReady, false);
assert.match(status.permissionReadiness.summary, /完整接管/);
assert.equal(status.permissionSetup.mode, "one_time_setup");
assert.equal(status.permissionSetup.silentUseReady, false);
assert.equal(status.permissionSetup.actions.some((action) => action.key === "fullDiskAccess"), true);
assert.equal(
status.permissionSetup.actions.every((action) => action.settingsUrl.startsWith("x-apple.systempreferences:")),
true,
);
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",
lastSkills: [
{ name: "bb-browser", category: "MacBook Air", path: "/Users/jas/.codex/skills/bb-browser/SKILL.md" },
{ name: "skill-installer", category: ".system", path: "/Users/jas/.codex/skills/.system/skill-installer/SKILL.md" },
],
lastSkillSyncOk: true,
},
{
permissions: {
accessibility: "granted",
screenRecording: "granted",
automation: "granted",
fullDiskAccess: "missing",
inputMonitoring: "unknown",
},
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, /href="\/boss-agent\?tab=permissions"><span>本机权限获取<\/span>/);
assert.match(html, /href="\/boss-agent\?tab=skills"><span>Skill<\/span>/);
assert.match(html, /class="active" href="\/boss-agent\?tab=overview"/);
assert.doesNotMatch(html, /<section class="sidebar-card">/);
assert.doesNotMatch(html, /<div class="sidebar-title">本机权限获取<\/div>/);
assert.match(html, /Skill/);
assert.match(html, /DeepSeek V4/);
assert.match(html, /默认公司/);
assert.doesNotMatch(html, /boss-secret-token/);
assert.doesNotMatch(html, /<h2>本机电脑权限状态<\/h2>/);
});
test("boss-agent permission and skill menu entries render as separate tab pages", () => {
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",
license: {
enterpriseName: "默认公司",
status: "valid",
},
},
{
lastHeartbeatOk: true,
lastSkills: [
{ name: "bb-browser", category: "MacBook Air", path: "/Users/jas/.codex/skills/bb-browser/SKILL.md" },
],
lastSkillSyncOk: true,
},
{
permissions: {
accessibility: "granted",
screenRecording: "granted",
automation: "granted",
fullDiskAccess: "missing",
},
},
);
const permissionsHtml = renderBossAgentHtml(status, { activeTab: "permissions" });
assert.match(permissionsHtml, /class="active" href="\/boss-agent\?tab=permissions"/);
assert.match(permissionsHtml, /<h2>一次完整授权<\/h2>/);
assert.match(permissionsHtml, /完整接管待补齐/);
assert.match(permissionsHtml, /后续静默使用/);
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=all/);
assert.match(permissionsHtml, /api\/v1\/boss-agent\/permissions\/open\?target=fullDiskAccess/);
assert.doesNotMatch(permissionsHtml, /<h2>Skill 部署情况<\/h2>/);
const skillsHtml = renderBossAgentHtml(status, { activeTab: "skills" });
assert.match(skillsHtml, /class="active" href="\/boss-agent\?tab=skills"/);
assert.match(skillsHtml, /<h2>Skill 部署情况<\/h2>/);
assert.match(skillsHtml, /bb-browser/);
assert.doesNotMatch(skillsHtml, /<h2>一次完整授权<\/h2>/);
});
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 绑定二维码/);
});
test("boss-agent mac app intercepts permission links and triggers native app permission requests", () => {
const swiftSource = readFileSync("apps/boss-agent-mac/Sources/BossAgentApp.swift", "utf8");
const buildScript = readFileSync("scripts/build-boss-agent-mac-app.sh", "utf8");
assert.match(swiftSource, /decidePolicyFor navigationAction/);
assert.match(swiftSource, /api\/v1\/boss-agent\/permissions\/open/);
assert.match(swiftSource, /AXIsProcessTrustedWithOptions/);
assert.match(swiftSource, /CGRequestScreenCaptureAccess/);
assert.match(swiftSource, /AVCaptureDevice\.requestAccess\(for: \.audio/);
assert.match(swiftSource, /AVCaptureDevice\.requestAccess\(for: \.video/);
assert.match(swiftSource, /UNUserNotificationCenter\.current\(\)\.requestAuthorization/);
assert.match(swiftSource, /CGEvent\.tapCreate/);
assert.match(swiftSource, /NSWorkspace\.shared\.open/);
assert.match(buildScript, /NSMicrophoneUsageDescription/);
assert.match(buildScript, /NSCameraUsageDescription/);
assert.match(buildScript, /NSAppleEventsUsageDescription/);
assert.match(buildScript, /NSLocalNetworkUsageDescription/);
});