




















@@ -45,6 +45,14 @@ function createParams(
4545};
4646}
474748+function expectedMaintenanceWarning(reasonText: string): string {
49+return (
50+`\u26A0\uFE0F Session maintenance warning: this active session would be evicted (${reasonText}). ` +
51+`Maintenance is set to warn-only, so nothing was reset. ` +
52+`To enforce cleanup, set \`session.maintenance.mode: "enforce"\` or increase the limits.`
53+);
54+}
55+4856describe("deliverSessionMaintenanceWarning", () => {
4957let prevVitest: string | undefined;
5058let prevNodeEnv: string | undefined;
@@ -104,13 +112,13 @@ describe("deliverSessionMaintenanceWarning", () => {
104112105113await deliverSessionMaintenanceWarning(params);
106114107-expect(mocks.deliverOutboundPayloads).toHaveBeenCalledWith(
108- expect.objectContaining({
109- channel: "mobilechat",
110- to: "+15550001",
111- session: { key: "agent:main:main", agentId: "agent-from-key" },
112-}),
113-);
115+const [deliveryParams] = mocks.deliverOutboundPayloads.mock.calls[0] ?? [];
116+expect(deliveryParams?.channel).toBe("mobilechat");
117+expect(deliveryParams?.to).toBe("+15550001");
118+expect(deliveryParams?.session).toEqual({
119+key: "agent:main:main",
120+agentId: "agent-from-key",
121+});
114122expect(mocks.enqueueSystemEvent).not.toHaveBeenCalled();
115123});
116124@@ -132,22 +140,23 @@ describe("deliverSessionMaintenanceWarning", () => {
132140});
133141mocks.isDeliverableMessageChannel.mockReturnValueOnce(false);
134142135-await deliverSessionMaintenanceWarning(
136-createParams({
137-warning: {
138- pruneAfterMs: 3_600_000,
139- maxEntries: 10,
140- wouldPrune: false,
141- wouldCap: true,
142- } as never,
143- }),
144-);
143+const params = createParams({
144+warning: {
145+pruneAfterMs: 3_600_000,
146+maxEntries: 10,
147+wouldPrune: false,
148+wouldCap: true,
149+} as never,
150+});
151+152+await deliverSessionMaintenanceWarning(params);
145153146154expect(mocks.deliverOutboundPayloads).not.toHaveBeenCalled();
147-expect(mocks.enqueueSystemEvent).toHaveBeenCalledWith(
148-expect.stringContaining("most recent 10 sessions"),
149-expect.objectContaining({ sessionKey: expect.stringContaining("agent:") }),
150-);
155+expect(mocks.enqueueSystemEvent).toHaveBeenCalledTimes(1);
156+expect(mocks.enqueueSystemEvent.mock.calls[0]).toEqual([
157+expectedMaintenanceWarning("not in the most recent 10 sessions"),
158+{ sessionKey: params.sessionKey },
159+]);
151160});
152161153162it("skips warning delivery in test mode", async () => {
@@ -162,12 +171,14 @@ describe("deliverSessionMaintenanceWarning", () => {
162171163172it("enqueues a system event when outbound delivery fails", async () => {
164173mocks.deliverOutboundPayloads.mockRejectedValueOnce(new Error("boom"));
174+const params = createParams();
165175166-await deliverSessionMaintenanceWarning(createParams());
176+await deliverSessionMaintenanceWarning(params);
167177168-expect(mocks.enqueueSystemEvent).toHaveBeenCalledWith(
169-expect.stringContaining("older than 1 second"),
170-expect.objectContaining({ sessionKey: expect.stringContaining("agent:") }),
171-);
178+expect(mocks.enqueueSystemEvent).toHaveBeenCalledTimes(1);
179+expect(mocks.enqueueSystemEvent.mock.calls[0]).toEqual([
180+expectedMaintenanceWarning("older than 1 second"),
181+{ sessionKey: params.sessionKey },
182+]);
172183});
173184});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。