Files
browser/platform_web/schemas/scumManagementRcon.test.ts

22 lines
1.0 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { scumSourceRCONChatRequest, scumSourceRCONCommandRequest } from "./scumManagementRcon";
describe("SCUM management Source RCON schema", () => {
it("builds a direct RCON job request without connection material", () => {
const stamp = Date.UTC(2026, 7, 3, 8, 0, 0);
expect(scumSourceRCONCommandRequest("server/unsafe", " ListPlayers ", stamp)).toEqual({
kind: "command",
command: "#ListPlayers",
idempotencyKey: `web:scum-rcon:server-unsafe:${stamp}`
});
});
it("formats direct commands and rejects framed text", () => {
expect(scumSourceRCONChatRequest("server-1", "Restart in ten minutes", 42)).toEqual({ kind: "chat", chatType: 4, message: "Restart in ten minutes", idempotencyKey: "web:scum-rcon-chat:server-1:42" });
expect(scumSourceRCONCommandRequest("server-1", "#SetTime 12").command).toBe("#SetTime 12");
expect(() => scumSourceRCONCommandRequest("server-1", "ListPlayers\nSetTime 12")).toThrow("管理指令必须是单行文本");
});
});