* Add custom headers to direct connections * Address custom header review feedback * Fix direct connection header integration * Fix desktop relay E2E transport setup --------- Co-authored-by: Claude <claude@Claudes-Mac-mini.local> Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
57 lines
1.9 KiB
TypeScript
57 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { normalizeConnectionHeadersRecord, prepareConnectionHeaders } from "./connection-headers";
|
|
|
|
describe("prepareConnectionHeaders", () => {
|
|
it("trims and returns custom headers", () => {
|
|
expect(
|
|
prepareConnectionHeaders([
|
|
{ id: 1, name: " X-Tenant ", value: " acme " },
|
|
{ id: 2, name: "X-Empty", value: "" },
|
|
]),
|
|
).toEqual({ headers: { "X-Tenant": "acme", "X-Empty": "" } });
|
|
});
|
|
|
|
it("ignores completely empty draft rows", () => {
|
|
expect(prepareConnectionHeaders([{ id: 1, name: "", value: "" }])).toEqual({});
|
|
});
|
|
|
|
it("requires a name when a value is entered", () => {
|
|
expect(prepareConnectionHeaders([{ id: 1, name: "", value: "acme" }])).toEqual({
|
|
issue: { type: "missingName" },
|
|
});
|
|
});
|
|
|
|
it("rejects invalid and duplicate names case-insensitively", () => {
|
|
expect(prepareConnectionHeaders([{ id: 1, name: "Bad Header", value: "value" }])).toEqual({
|
|
issue: { type: "invalidName", name: "Bad Header" },
|
|
});
|
|
expect(
|
|
prepareConnectionHeaders([
|
|
{ id: 1, name: "X-Tenant", value: "one" },
|
|
{ id: 2, name: "x-tenant", value: "two" },
|
|
]),
|
|
).toEqual({ issue: { type: "duplicateName", name: "x-tenant" } });
|
|
});
|
|
|
|
it("rejects line breaks in values", () => {
|
|
expect(prepareConnectionHeaders([{ id: 1, name: "X-Test", value: "one\ntwo" }])).toEqual({
|
|
issue: { type: "invalidValue", name: "X-Test" },
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("normalizeConnectionHeadersRecord", () => {
|
|
it("accepts a valid persisted string record", () => {
|
|
expect(normalizeConnectionHeadersRecord({ "X-Tenant": "acme" })).toEqual({
|
|
"X-Tenant": "acme",
|
|
});
|
|
});
|
|
|
|
it("rejects malformed persisted header values", () => {
|
|
expect(normalizeConnectionHeadersRecord({ "X-Tenant": 42 })).toBeUndefined();
|
|
expect(
|
|
normalizeConnectionHeadersRecord({ "X-Tenant": "acme\r\nX-Injected: true" }),
|
|
).toBeUndefined();
|
|
});
|
|
});
|