34 lines
1.9 KiB
TypeScript
34 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { admissionDenialMessage, DEFAULT_ADMISSION_MESSAGES, parseAdmissionMessages } from "./admission-settings";
|
|
|
|
describe("admission message settings", () => {
|
|
it("normalizes three independently configured denial messages", () => {
|
|
const formData = new FormData();
|
|
formData.set("registrationMessage", " Register your account before joining. ");
|
|
formData.set("groupAccessDeniedMessage", "This group cannot access the server right now.");
|
|
formData.set("vpnDeniedMessage", "VPN access requires a host-approved exception.");
|
|
|
|
expect(parseAdmissionMessages(formData)).toEqual({
|
|
registrationMessage: "Register your account before joining.",
|
|
groupAccessDeniedMessage: "This group cannot access the server right now.",
|
|
vpnDeniedMessage: "VPN access requires a host-approved exception.",
|
|
});
|
|
});
|
|
|
|
it("selects the configured message for each admission denial reason", () => {
|
|
expect(admissionDenialMessage("not_registered", DEFAULT_ADMISSION_MESSAGES)).toBe(DEFAULT_ADMISSION_MESSAGES.registrationMessage);
|
|
expect(admissionDenialMessage("group_access_disabled", DEFAULT_ADMISSION_MESSAGES)).toBe(DEFAULT_ADMISSION_MESSAGES.groupAccessDeniedMessage);
|
|
expect(admissionDenialMessage("anonymized_network_disallowed", DEFAULT_ADMISSION_MESSAGES)).toBe(DEFAULT_ADMISSION_MESSAGES.vpnDeniedMessage);
|
|
});
|
|
|
|
it("rejects missing, short, overlong, or control-character messages", () => {
|
|
for (const invalid of ["short", "a".repeat(501), "Denied\nInjected"] as const) {
|
|
const formData = new FormData();
|
|
formData.set("registrationMessage", DEFAULT_ADMISSION_MESSAGES.registrationMessage);
|
|
formData.set("groupAccessDeniedMessage", DEFAULT_ADMISSION_MESSAGES.groupAccessDeniedMessage);
|
|
formData.set("vpnDeniedMessage", invalid);
|
|
expect(parseAdmissionMessages(formData)).toBeNull();
|
|
}
|
|
});
|
|
});
|