






















@@ -216,6 +216,15 @@ function expectRecordFields(record: unknown, expected: Record<string, unknown>)
216216return actual;
217217}
218218219+function expectStringFieldContains(
220+record: Record<string, unknown>,
221+field: string,
222+expected: string,
223+) {
224+expect(record[field]).toBeTypeOf("string");
225+expect(record[field]).toContain(expected);
226+}
227+219228function mockCallArg(mock: ReturnType<typeof vi.fn>, callIndex = 0, argIndex = 0) {
220229const call = mock.mock.calls[callIndex];
221230if (!call) {
@@ -1155,7 +1164,7 @@ describe("gateway agent handler", () => {
11551164);
1156116511571166const error = expectRespondError(respond, {});
1158-expect(error.message).toEqual(expect.stringContaining("invalid agent params"));
1167+expectStringFieldContains(error, "message", "invalid agent params");
11591168expect(mocks.agentCommand).not.toHaveBeenCalled();
11601169});
11611170@@ -1185,18 +1194,21 @@ describe("gateway agent handler", () => {
1185119411861195expect(mocks.agentCommand).not.toHaveBeenCalled();
11871196const error = expectRespondError(respond, {});
1188-expect(error.message).toEqual(
1189-expect.stringContaining("attachment broken.png: invalid base64 content"),
1190-);
1197+expectStringFieldContains(error, "message", "attachment broken.png: invalid base64 content");
11911198const logError = context.logGateway.error as unknown as ReturnType<typeof vi.fn>;
11921199expect(mockCallArg(logError)).toBe("agent attachment parse failed");
1193-const logMeta = expectRecordFields(mockCallArg(logError, 0, 1), {
1194-consoleMessage: expect.stringContaining(
1195-"agent attachment parse failed: Error: attachment broken.png",
1196-),
1197-error: expect.stringContaining("Error: attachment broken.png: invalid base64 content"),
1198-});
1199-expect(logMeta.error).toEqual(expect.stringContaining("\n at "));
1200+const logMeta = mockCallArg(logError, 0, 1) as Record<string, unknown>;
1201+expectStringFieldContains(
1202+logMeta,
1203+"consoleMessage",
1204+"agent attachment parse failed: Error: attachment broken.png",
1205+);
1206+expectStringFieldContains(
1207+logMeta,
1208+"error",
1209+"Error: attachment broken.png: invalid base64 content",
1210+);
1211+expectStringFieldContains(logMeta, "error", "\n at ");
12001212});
1201121312021214it("keeps model-run gateway prompts undecorated and forwards raw-run flags", async () => {
@@ -1323,7 +1335,7 @@ describe("gateway agent handler", () => {
1323133513241336expect(mocks.agentCommand).not.toHaveBeenCalled();
13251337const error = expectRespondError(respond, {});
1326-expect(error.message).toEqual(expect.stringContaining("requires target"));
1338+expectStringFieldContains(error, "message", "requires target");
13271339});
1328134013291341it("downgrades to session-only when bestEffortDeliver=true and no external channel is configured", async () => {
@@ -1367,8 +1379,8 @@ describe("gateway agent handler", () => {
13671379const rejected = respond.mock.calls.find((call: unknown[]) => call[0] === false);
13681380expect(rejected).toBeUndefined();
13691381expect(logInfo).toHaveBeenCalledTimes(1);
1370-expect(mockCallArg(logInfo)).toEqual(
1371-expect.stringContaining("agent delivery downgraded to session-only (bestEffortDeliver)"),
1382+expect(mockCallArg(logInfo)).toContain(
1383+"agent delivery downgraded to session-only (bestEffortDeliver)",
13721384);
13731385});
13741386@@ -1390,7 +1402,7 @@ describe("gateway agent handler", () => {
1390140213911403expect(mocks.agentCommand).not.toHaveBeenCalled();
13921404const error = expectRespondError(respond, {});
1393-expect(error.message).toEqual(expect.stringContaining("invalid agent params"));
1405+expectStringFieldContains(error, "message", "invalid agent params");
13941406});
1395140713961408it("forwards one-shot bundle MCP cleanup from agent RPC into the runner", async () => {
@@ -1454,7 +1466,7 @@ describe("gateway agent handler", () => {
14541466);
1455146714561468const error = expectRespondError(respond, {});
1457-expect(error.message).toEqual(expect.stringContaining("unknown channel: not-a-real-channel"));
1469+expectStringFieldContains(error, "message", "unknown channel: not-a-real-channel");
14581470});
1459147114601472it("accepts music generation internal events", async () => {
@@ -2187,8 +2199,12 @@ describe("gateway agent handler", () => {
21872199runId: "task-registry-agent-seam",
21882200childSessionKey: "agent:main:main",
21892201sourceId: "task-registry-agent-seam",
2190-task: expect.stringContaining("background cli seam task"),
21912202});
2203+expectStringFieldContains(
2204+mockCallArg(createRunningTaskRunSpy) as Record<string, unknown>,
2205+"task",
2206+"background cli seam task",
2207+);
21922208expect(finalizeTaskRunByRunIdSpy).toHaveBeenCalledTimes(1);
21932209expectRecordFields(mockCallArg(finalizeTaskRunByRunIdSpy), {
21942210runtime: "cli",
@@ -2958,7 +2974,7 @@ describe("gateway agent handler", () => {
2958297429592975expect(mocks.agentCommand).not.toHaveBeenCalled();
29602976const error = expectRespondError(respond, {});
2961-expect(error.message).toEqual(expect.stringContaining("malformed session key"));
2977+expectStringFieldContains(error, "message", "malformed session key");
29622978});
2963297929642980it("rejects /reset for write-scoped gateway callers", async () => {
@@ -2992,7 +3008,7 @@ describe("gateway agent handler", () => {
29923008);
2993300929943010const error = expectRespondError(respond, {});
2995-expect(error.message).toEqual(expect.stringContaining("malformed session key"));
3011+expectStringFieldContains(error, "message", "malformed session key");
29963012});
2997301329983014it("redacts unsafe avatar sources in agent.identity.get", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。