Files
reverse-engineering-anything/src/application/ClientConfigurationDocument.shape.test.ts
T
morluto 5044e20171 test: focus diagnostics and evidence checks on behavior (#9303)
* test: focus configuration diagnostics on their owners

Preserve shape errors, selected paths, recovery guidance, and unchanged-file behavior across parser, setup, and uninstall boundaries.

* test: focus artifact and evidence checks on behavior

Retain format, identity, malformed-input, and cleanup coverage while removing fixed prose and closing the admitted test source.

* refactor(debugger): use configured session admission limits

* test: focus evidence and diagnostics on behavior

* fix(test): restore verifier export and formatting

* test(config): verify debugger limit ranges

* test(rizin): keep fixture executable authoritative

* test(rizin): isolate debugger fixture environment
2026-11-08 16:39:20 +00:00

57 lines
2.0 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
ClientConfigurationShapeError,
parseClientConfiguration,
shadowedClientServers,
} from "./ClientConfigurationDocument.js";
describe("parseClientConfiguration shape diagnostics", () => {
it.each([
["null root", "null", "root"],
["array root", "[]", "root"],
["string root", '"x"', "root"],
["null server table", '{"mcpServers":null,"keep":1}', "mcpServers"],
["array server table", '{"mcpServers":[],"keep":1}', "mcpServers"],
["string server table", '{"mcpServers":"x","keep":1}', "mcpServers"],
])("reports a non-object %s", (_label, text, location) => {
let error: unknown;
try {
parseClientConfiguration(text, "json");
} catch (cause: unknown) {
error = cause;
}
expect(error).toBeInstanceOf(ClientConfigurationShapeError);
if (!(error instanceof Error)) throw new Error("Expected shape error");
expect(error.message).toContain(location);
expect(error.message).toContain("object");
});
it("still rejects unparsable JSON with SyntaxError", () => {
expect(() => parseClientConfiguration("not-json", "json")).toThrow(
SyntaxError,
);
});
it("reports only duplicates in the effective server object", () => {
const owned = '{"command":"rea","args":["mcp"]}';
const activeTable = `{"mcpServers":{"rea":null,"rea":${owned}}}`;
const active = parseClientConfiguration(activeTable, "json");
expect(shadowedClientServers(activeTable, active, "rea")).toEqual({
servers: [null],
legacyServers: [],
});
// Removing from the effective parent leaves an earlier repeated parent
// inactive. Its members are not registrations the client would reveal.
const inactiveParent =
`{"mcpServers":{"rea":{"command":"/usr/bin/false"}},` +
`"mcpServers":{"rea":${owned}}}`;
const parsed = parseClientConfiguration(inactiveParent, "json");
expect(shadowedClientServers(inactiveParent, parsed, "rea")).toEqual({
servers: [],
legacyServers: [],
});
});
});