Showing
3 changed files
with
71 additions
and
0 deletions
server/test/invalidMessage.test.ts
0 → 100644
1 | +import { expect } from "chai"; | ||
2 | +import { Connection } from "../connection/Connection"; | ||
3 | +import { SocketWrapper } from "../connection/SocketWrapper"; | ||
4 | +import { RoomManager } from "../room/RoomManager"; | ||
5 | +import { DummySocket } from "./util/DummySocket"; | ||
6 | +import { SocketTester } from "./util/SocketTester"; | ||
7 | + | ||
8 | +describe("유효하지 않은 메세지", () => { | ||
9 | + it("빈 메세지는 실패합니다", () => { | ||
10 | + const socket = new SocketTester(); | ||
11 | + const response = socket.testAny({}); | ||
12 | + expect(response.ok).eq(false); | ||
13 | + }); | ||
14 | + it("유효하지 않은 타입의 메세지는 실패합니다", () => { | ||
15 | + const socket = new SocketTester(); | ||
16 | + const response = socket.testRaw({ type: "wtf", message: {} }); | ||
17 | + expect(response.ok).eq(false); | ||
18 | + }); | ||
19 | + it("유효한 타입이지만 내용이 유효하지 않은 메세지는 실패합니다", () => { | ||
20 | + const socket = new SocketTester(); | ||
21 | + const response = socket.testRaw({ type: "login", message: {} }); | ||
22 | + expect(response.ok).eq(false); | ||
23 | + }); | ||
24 | +}); |
server/test/util/DummySocket.ts
0 → 100644
1 | +import { RawMessage, ServerResponse } from "../../../common"; | ||
2 | +import { SocketWrapper } from "../../connection/SocketWrapper"; | ||
3 | + | ||
4 | +export class DummySocket implements SocketWrapper { | ||
5 | + public handler?: (raw: RawMessage) => ServerResponse<any>; | ||
6 | + public setHandler(handler: (raw: RawMessage) => ServerResponse<any>) { | ||
7 | + this.handler = handler; | ||
8 | + } | ||
9 | + public send(raw: RawMessage): void {} | ||
10 | +} |
server/test/util/SocketTester.ts
0 → 100644
1 | +import { | ||
2 | + RawMessage, | ||
3 | + ServerInboundMessage, | ||
4 | + ServerInboundMessageKey, | ||
5 | + ServerResponse, | ||
6 | +} from "../../../common"; | ||
7 | +import { Connection } from "../../connection/Connection"; | ||
8 | +import { RoomManager } from "../../room/RoomManager"; | ||
9 | +import { DummySocket } from "./DummySocket"; | ||
10 | + | ||
11 | +export class SocketTester { | ||
12 | + public readonly connection: Connection; | ||
13 | + constructor( | ||
14 | + public socket: DummySocket = new DummySocket(), | ||
15 | + roomManager: RoomManager = new RoomManager() | ||
16 | + ) { | ||
17 | + this.connection = new Connection(socket, roomManager); | ||
18 | + } | ||
19 | + | ||
20 | + public test<T extends ServerInboundMessageKey>( | ||
21 | + type: T, | ||
22 | + message: ServerInboundMessage<T> | ||
23 | + ): ServerResponse<any> { | ||
24 | + return this.connection.handleRaw({ | ||
25 | + type: type as string, | ||
26 | + message: message, | ||
27 | + }); | ||
28 | + } | ||
29 | + | ||
30 | + public testRaw(raw: RawMessage): ServerResponse<any> { | ||
31 | + return this.connection.handleRaw(raw); | ||
32 | + } | ||
33 | + | ||
34 | + public testAny(obj: any): ServerResponse<any> { | ||
35 | + return this.connection.handleRaw(obj); | ||
36 | + } | ||
37 | +} |
-
Please register or login to post a comment