Files
VoCat/web/test/notificationSettingsModel.test.mjs
T

92 lines
2.5 KiB
JavaScript

import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
import test from "node:test";
import ts from "typescript";
const source = await readFile(new URL("../src/components/settings/model.ts", import.meta.url), "utf8");
const compiled = ts.transpileModule(source, {
compilerOptions: {
module: ts.ModuleKind.ES2022,
target: ts.ScriptTarget.ES2022,
},
});
const moduleURL = `data:text/javascript;base64,${Buffer.from(compiled.outputText).toString("base64")}`;
const {
DEFAULT_LARK_PAYLOAD_TEMPLATE,
buildLarkPayload,
buildNotificationsPayload,
formsFromNotifications,
} = await import(moduleURL);
test("loads a masked signed Lark group bot config", () => {
const forms = formsFromNotifications({
lark: {
enabled: true,
url: "********",
signingEnabled: true,
secret: "********",
payloadTemplate: '{"msg_type":"text"}',
},
});
assert.deepEqual(forms.lark, {
enabled: true,
url: "********",
signingEnabled: true,
secret: "********",
payloadTemplate: '{"msg_type":"text"}',
});
});
test("does not expose a dormant signing secret when signing is disabled", () => {
const forms = formsFromNotifications({
lark: {
enabled: true,
url: "********",
signingEnabled: false,
secret: "********",
},
});
assert.equal(forms.lark.secret, "");
assert.equal(forms.lark.payloadTemplate, DEFAULT_LARK_PAYLOAD_TEMPLATE);
});
test("builds the single group bot webhook contract", () => {
const signed = buildLarkPayload({
enabled: true,
url: " https://open.larksuite.com/open-apis/bot/v2/hook/token ",
signingEnabled: true,
secret: "demo",
payloadTemplate: '{"msg_type":"text"}',
}, true);
assert.deepEqual(signed, {
enabled: true,
url: "https://open.larksuite.com/open-apis/bot/v2/hook/token",
signing_enabled: true,
secret: "demo",
payload_template: '{"msg_type":"text"}',
});
const unsigned = buildLarkPayload({
enabled: false,
url: "",
signingEnabled: false,
secret: "stale-secret",
payloadTemplate: DEFAULT_LARK_PAYLOAD_TEMPLATE,
});
assert.equal(Object.hasOwn(unsigned, "url"), false);
assert.equal(Object.hasOwn(unsigned, "secret"), false);
});
test("includes Lark in the complete notification settings payload", () => {
const forms = formsFromNotifications({});
const payload = buildNotificationsPayload(forms);
assert.deepEqual(payload.lark, {
enabled: false,
signing_enabled: false,
payload_template: DEFAULT_LARK_PAYLOAD_TEMPLATE,
});
});