CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s
43 lines
2.5 KiB
TypeScript
43 lines
2.5 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { existsSync, readFileSync } from "node:fs";
|
|
import test from "node:test";
|
|
|
|
test("customer distribution is a generic single-login gateway bridge", () => {
|
|
const packageMetadata = JSON.parse(readFileSync("package.json", "utf8")) as { version: string };
|
|
assert.match(packageMetadata.version, /^\d+\.\d+\.\d+-rc\.\d+$/);
|
|
assert.equal(existsSync("plugins/dingtalk-approval"), false);
|
|
|
|
const installer = readFileSync("distribution/agent-install.template.md", "utf8");
|
|
assert.match(installer, /Ed25519/);
|
|
assert.match(installer, /唯一通用安装入口/);
|
|
assert.match(installer, /使用 `mcpConfig`/);
|
|
assert.match(installer, /安装器本身不会猜测或修改 Agent 的私有配置/);
|
|
assert.doesNotMatch(installer, /--host|WorkBuddy|Codex|Claude/);
|
|
assert.match(installer, /不会通过其他消息通道自动推送链接.*完整登录 URL.*当前回复/s);
|
|
assert.match(installer, /读取返回的 `postInstall`.*不得等到用户第一次查询审批/s);
|
|
assert.match(installer, /onboarding\.firstRun=true.*简短示例.*不要自动执行/s);
|
|
assert.doesNotMatch(installer, /通过当前 Messenger/);
|
|
assert.doesNotMatch(installer, /DWS_CLI_PATH|dingtalk-workspace-cli|APP_MODE=local/);
|
|
|
|
const skill = readFileSync("skills/dingtalk-approval/SKILL.md", "utf8");
|
|
assert.match(skill, /XFT recall is experimental.*XFTSYS9999/s);
|
|
assert.match(skill, /does not send or push.*current user-facing reply/s);
|
|
assert.match(skill, /handle the installer's `postInstall` result immediately.*waiting for the user's first approval request/s);
|
|
assert.match(skill, /onboarding\.firstRun=true.*Do not execute an example automatically/s);
|
|
|
|
const builder = readFileSync("scripts/build-release.mjs", "utf8");
|
|
assert.match(builder, /schemaVersion: 3,\s+version,/s);
|
|
assert.match(builder, /signData\(null, manifestBytes/);
|
|
assert.match(builder, /dingtalk-approval-client/);
|
|
assert.doesNotMatch(builder, /codexPlugin|codex-plugin|\.codex-plugin|openai\.yaml/);
|
|
assert.doesNotMatch(builder, /dingtalk-workspace-cli|DWS_URL|DWS_SHA256/);
|
|
});
|
|
|
|
test("public install page explicitly declares UTF-8 for browser rendering", () => {
|
|
const nginx = readFileSync("deploy/approval.justconn.top.nginx.conf", "utf8");
|
|
const installLocation = nginx.match(/location = \/downloads\/dingmcp\/install\.md \{([\s\S]*?)\n \}/)?.[1] ?? "";
|
|
assert.match(installLocation, /default_type text\/markdown;/);
|
|
assert.match(installLocation, /charset utf-8;/);
|
|
assert.match(installLocation, /charset_types text\/markdown;/);
|
|
});
|