mirror of
https://github.com/nvms/prsm.git
synced 2025-12-16 08:00:53 +00:00
additional client tests
This commit is contained in:
parent
fde46ad338
commit
209614c3e8
@ -1,4 +1,4 @@
|
|||||||
import { describe, test, expect, beforeEach, afterEach } from "vitest";
|
import { describe, test, expect, beforeEach, afterEach, vi } from "vitest";
|
||||||
import Redis from "ioredis";
|
import Redis from "ioredis";
|
||||||
import { MeshServer } from "../server";
|
import { MeshServer } from "../server";
|
||||||
import { MeshClient, Status } from "../client";
|
import { MeshClient, Status } from "../client";
|
||||||
@ -158,7 +158,10 @@ describe("MeshClient", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
await server.ready();
|
await server.ready();
|
||||||
const client = new MeshClient(`ws://localhost:8130`, { pingTimeout: 10, maxMissedPings: 10 });
|
const client = new MeshClient(`ws://localhost:8130`, {
|
||||||
|
pingTimeout: 10,
|
||||||
|
maxMissedPings: 10,
|
||||||
|
});
|
||||||
await client.connect();
|
await client.connect();
|
||||||
|
|
||||||
return new Promise<void>((resolve) => {
|
return new Promise<void>((resolve) => {
|
||||||
@ -171,4 +174,91 @@ describe("MeshClient", () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("client receives 'latency' messages", async () => {
|
||||||
|
const server = new MeshServer({
|
||||||
|
port: 8131,
|
||||||
|
pingInterval: 10,
|
||||||
|
latencyInterval: 10,
|
||||||
|
maxMissedPongs: 10,
|
||||||
|
redisOptions: { host: REDIS_HOST, port: REDIS_PORT },
|
||||||
|
});
|
||||||
|
|
||||||
|
await server.ready();
|
||||||
|
const client = new MeshClient(`ws://localhost:8131`, {
|
||||||
|
pingTimeout: 10,
|
||||||
|
maxMissedPings: 10,
|
||||||
|
});
|
||||||
|
await client.connect();
|
||||||
|
|
||||||
|
return new Promise<void>((resolve) => {
|
||||||
|
client.on("latency", (data) => {
|
||||||
|
expect(data).toBeDefined();
|
||||||
|
resolve();
|
||||||
|
});
|
||||||
|
client.on("close", () => {
|
||||||
|
expect(client.status).toBe(Status.OFFLINE);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test("client can get room metadata", async () => {
|
||||||
|
const roomName = "test-room";
|
||||||
|
const metadata = { key: "value", nested: { data: true } };
|
||||||
|
|
||||||
|
await client.connect();
|
||||||
|
await client.joinRoom(roomName);
|
||||||
|
|
||||||
|
await server.roomManager.setMetadata(roomName, metadata);
|
||||||
|
|
||||||
|
const retrievedMetadata = await client.getRoomMetadata(roomName);
|
||||||
|
expect(retrievedMetadata).toEqual(metadata);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("client can get connection metadata", async () => {
|
||||||
|
await client.connect();
|
||||||
|
const clientConnection = server.connectionManager.getLocalConnections()[0]!;
|
||||||
|
|
||||||
|
const metadata = { user: "test-user", permissions: ["read", "write"] };
|
||||||
|
await server.connectionManager.setMetadata(clientConnection, metadata);
|
||||||
|
|
||||||
|
const retrievedMetadata = await client.getConnectionMetadata(
|
||||||
|
clientConnection.id
|
||||||
|
);
|
||||||
|
expect(retrievedMetadata).toEqual(metadata);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("client can get their own connection metadata", async () => {
|
||||||
|
await client.connect();
|
||||||
|
const clientConnection = server.connectionManager.getLocalConnections()[0]!;
|
||||||
|
const metadata = { user: "test-user", permissions: ["read", "write"] };
|
||||||
|
await server.connectionManager.setMetadata(clientConnection, metadata);
|
||||||
|
const retrievedMetadata = await client.getConnectionMetadata();
|
||||||
|
expect(retrievedMetadata).toEqual(metadata);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("helper methods register event listeners correctly", async () => {
|
||||||
|
const connectSpy = vi.fn();
|
||||||
|
const disconnectSpy = vi.fn();
|
||||||
|
const reconnectSpy = vi.fn();
|
||||||
|
const reconnectFailedSpy = vi.fn();
|
||||||
|
|
||||||
|
client
|
||||||
|
.onConnect(connectSpy)
|
||||||
|
.onDisconnect(disconnectSpy)
|
||||||
|
.onReconnect(reconnectSpy)
|
||||||
|
.onReconnectFailed(reconnectFailedSpy);
|
||||||
|
|
||||||
|
await client.connect();
|
||||||
|
expect(connectSpy).toHaveBeenCalled();
|
||||||
|
|
||||||
|
client.emit("disconnect");
|
||||||
|
expect(disconnectSpy).toHaveBeenCalled();
|
||||||
|
|
||||||
|
client.emit("reconnect");
|
||||||
|
expect(reconnectSpy).toHaveBeenCalled();
|
||||||
|
|
||||||
|
client.emit("reconnectfailed");
|
||||||
|
expect(reconnectFailedSpy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user