33 lines
1.6 KiB
JavaScript
33 lines
1.6 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { readFile } from "node:fs/promises";
|
|
import test from "node:test";
|
|
|
|
const root = new URL("../app/static/", import.meta.url);
|
|
|
|
test("settings places unrestricted FRP maintenance at the bottom", async () => {
|
|
const html = await readFile(new URL("index.html", root), "utf8");
|
|
const settings = html.slice(html.indexOf('id="workspace-settings"'));
|
|
assert.match(settings, /<h3>frp配置<\/h3>/);
|
|
assert.match(settings, /此功能通常是远程排查使用,请保证你知道你在做什么。/);
|
|
assert.match(settings, />启动frp<\/button>/);
|
|
assert.match(settings, />编辑配置文件<\/button>/);
|
|
assert.match(settings, />网络检测<\/button>/);
|
|
assert.ok(settings.indexOf("frp-setting-card") > settings.indexOf('id="animation-preview-max-concurrent"'));
|
|
});
|
|
|
|
test("FRP editor uses raw server storage and official validation errors", async () => {
|
|
const source = await readFile(new URL("views/frp-settings.js", root), "utf8");
|
|
assert.match(source, /\/api\/frp\/configs/);
|
|
assert.match(source, /Content-Type": "text\/plain; charset=utf-8"/);
|
|
assert.match(source, /正在使用 frpc 校验配置/);
|
|
assert.match(source, /discardFrpDrafts/);
|
|
assert.doesNotMatch(source, /localStorage|sessionStorage/);
|
|
});
|
|
|
|
test("network diagnostics renders layered evidence", async () => {
|
|
const source = await readFile(new URL("views/frp-settings.js", root), "utf8");
|
|
assert.match(source, /\/api\/network\/diagnostics/);
|
|
assert.match(source, /网络检测失败/);
|
|
assert.match(source, /result\.checks\.forEach/);
|
|
});
|