mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-02 04:52:50 +08:00
feat(ws): scope guest WebSocket feed to allowed bots
This commit is contained in:
1 parent
0073d7d612
commit
d2ab888114
3 files changed
+83
-13
No files matched your search
@@ -7,6 +7,7 @@ import { createDatabase, type BotDatabase } from "../data/database.js";
|
||||
import { createUserStore } from "../data/users.js";
|
||||
import { createSessionStore } from "../data/sessions.js";
|
||||
import { validateSessionFromHeaders, SESSION_COOKIE_NAME } from "./auth/validateSession.js";
|
||||
import { setupWebSocket } from "./websocket.js";
|
||||
|
||||
function buildServer(sessions: ReturnType<typeof createSessionStore>) {
|
||||
const app = express();
|
||||
@@ -72,3 +73,44 @@ describe("WebSocket auth at upgrade", () => {
|
||||
ws.close();
|
||||
});
|
||||
});
|
||||
|
||||
describe("WebSocket guest bot scope", () => {
|
||||
it("guest init is filtered to the guest bot scope", () => {
|
||||
const sent: any[] = [];
|
||||
const fakeWs: any = {
|
||||
readyState: 1,
|
||||
isGuest: true,
|
||||
botScope: new Set(["bot1"]),
|
||||
send: (m: string) => sent.push(JSON.parse(m)),
|
||||
on: () => {},
|
||||
};
|
||||
const fakeWss: any = {
|
||||
on: (ev: string, cb: any) => {
|
||||
if (ev === "connection") fakeWss._conn = cb;
|
||||
},
|
||||
};
|
||||
const makeBot = (id: string) => ({
|
||||
id,
|
||||
getStatus: () => ({ id }),
|
||||
getQueue: () => [],
|
||||
on: () => {},
|
||||
removeListener: () => {},
|
||||
});
|
||||
const botManager: any = {
|
||||
getAllBots: () => [makeBot("bot1"), makeBot("bot2")],
|
||||
on: () => {},
|
||||
off: () => {},
|
||||
removeListener: () => {},
|
||||
};
|
||||
const cleanup = setupWebSocket(fakeWss, botManager, {
|
||||
debug() {},
|
||||
error() {},
|
||||
info() {},
|
||||
warn() {},
|
||||
} as any);
|
||||
fakeWss._conn(fakeWs);
|
||||
const init = sent.find((m) => m.type === "init");
|
||||
expect(init.bots.map((b: any) => b.id)).toEqual(["bot1"]);
|
||||
cleanup();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user