Files
doktainer-upstream/tests/backend/security-regressions.test.ts
T
2026-06-02 00:17:50 +07:00

51 lines
1.2 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
consumeTerminalSocketTicket,
issueTerminalSocketTicket,
} from "../../src/server/services/terminal-ticket.service";
test("terminal websocket tickets are single-use and bound to server and session", () => {
const wrongServerTicket = issueTerminalSocketTicket({
userId: "user-1",
organizationId: "org-1",
serverId: "server-1",
sessionId: "session-1",
});
assert.equal(
consumeTerminalSocketTicket({
ticketId: wrongServerTicket.id,
serverId: "server-2",
sessionId: "session-1",
}),
null,
);
const ticket = issueTerminalSocketTicket({
userId: "user-1",
organizationId: "org-1",
serverId: "server-1",
sessionId: "session-1",
});
const consumed = consumeTerminalSocketTicket({
ticketId: ticket.id,
serverId: "server-1",
sessionId: "session-1",
});
assert.ok(consumed);
assert.equal(consumed?.userId, "user-1");
assert.equal(consumed?.organizationId, "org-1");
assert.equal(
consumeTerminalSocketTicket({
ticketId: ticket.id,
serverId: "server-1",
sessionId: "session-1",
}),
null,
);
});