From 021670ca1d48d13858b13c2a4ada4497c562395d Mon Sep 17 00:00:00 2001 From: ZacharyZcR Date: Sat, 3 Oct 2026 21:00:38 +0800 Subject: [PATCH] test(remote-desktop): preserve sessions beyond one hour (#1536) --- .../tests/backend/sessions.test.ts | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/plugins/remote-desktop/tests/backend/sessions.test.ts b/plugins/remote-desktop/tests/backend/sessions.test.ts index 2fb9ea0f0..1a9716e90 100644 --- a/plugins/remote-desktop/tests/backend/sessions.test.ts +++ b/plugins/remote-desktop/tests/backend/sessions.test.ts @@ -34,6 +34,26 @@ describe("RemoteSessions", () => { expect(sessions.byGuacamole("g1")).toBeNull(); }); + it.each(["vnc", "rdp"] as const)( + "keeps an opened %s session's proxy and jump tunnel alive beyond one hour", + (protocol) => { + vi.useFakeTimers(); + const sessions = new RemoteSessions(); + const proxy = vi.fn(); + const tunnel = vi.fn(); + sessions.park("c1", [proxy, tunnel]); + sessions.opened({ ...meta, protocol }, "g1"); + vi.advanceTimersByTime(2 * 60 * 60 * 1000); + expect(proxy).not.toHaveBeenCalled(); + expect(tunnel).not.toHaveBeenCalled(); + expect(sessions.byConnect("c1")?.guacamoleConnectionId).toBe("g1"); + sessions.closed("c1"); + sessions.closed("c1"); + expect(proxy).toHaveBeenCalledOnce(); + expect(tunnel).toHaveBeenCalledOnce(); + }, + ); + it("releases a tunnel guacd never used", () => { vi.useFakeTimers(); const sessions = new RemoteSessions(1000);