mirror of
https://github.com/nvms/prsm.git
synced 2025-12-16 00:00:52 +00:00
add tests
This commit is contained in:
parent
00472d978e
commit
83f618cca7
117
packages/duplex/tests/commandclient.test.ts
Normal file
117
packages/duplex/tests/commandclient.test.ts
Normal file
@ -0,0 +1,117 @@
|
||||
import { describe, test, expect, beforeEach, afterEach } from "vitest";
|
||||
import { CommandClient, CommandServer } from "../src/index";
|
||||
|
||||
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||
|
||||
describe("CommandClient and CommandServer", () => {
|
||||
const serverOptions = { host: "localhost", port: 8124, secure: false };
|
||||
const clientOptions = { host: "localhost", port: 8124, secure: false };
|
||||
let server: CommandServer;
|
||||
let client: CommandClient;
|
||||
|
||||
beforeEach(() => {
|
||||
server = new CommandServer(serverOptions);
|
||||
server.command(100, async (payload) => {
|
||||
return `Echo: ${payload}`;
|
||||
});
|
||||
|
||||
client = new CommandClient(clientOptions);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
if (client.status === 3) { // ONLINE
|
||||
client.close();
|
||||
}
|
||||
if (server.status === 3) { // ONLINE
|
||||
server.close();
|
||||
}
|
||||
});
|
||||
|
||||
test("client-server connection should be online", async () => {
|
||||
await new Promise<void>((resolve) => {
|
||||
server.once("listening", () => {
|
||||
client.once("connect", () => {
|
||||
expect(client.status).toBe(3); // ONLINE
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
server.connect();
|
||||
});
|
||||
}, 5000);
|
||||
|
||||
test("simple echo command", async () => {
|
||||
await new Promise<void>((resolve) => {
|
||||
server.once("listening", () => {
|
||||
client.once("connect", () => {
|
||||
client.command(100, "Hello", 5000, (result, error) => {
|
||||
expect(error).toBeUndefined();
|
||||
expect(result).toBe("Echo: Hello");
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
server.connect();
|
||||
});
|
||||
}, 5000);
|
||||
|
||||
// test("handle unknown command", async () => {
|
||||
// await sleep(1000);
|
||||
// await new Promise<void>((resolve) => {
|
||||
// server.once("listening", () => {
|
||||
// console.log("Listening! (unknown command)");
|
||||
// client.once("connect", () => {
|
||||
// console.log("Client connected, sending command.");
|
||||
// client.command(55, "Hello", 1000, (result, error) => {
|
||||
// console.log("Client callback CALLED! with result", result, "and error", error);
|
||||
// expect(result).toBeUndefined();
|
||||
// // expect(error).toBeDefined();
|
||||
// // expect(error.code).toBe("ENOTFOUND");
|
||||
// resolve();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// server.connect();
|
||||
// });
|
||||
// }, 2000); // Increased timeout
|
||||
|
||||
// test("command should timeout without server response", async () => {
|
||||
// await new Promise<void>((resolve) => {
|
||||
// server.once("listening", () => {
|
||||
// client.once("connect", () => {
|
||||
// client.command(101, "No response", 1000, (result, error) => {
|
||||
// expect(result).toBeUndefined();
|
||||
// expect(error).toBeInstanceOf(CodeError);
|
||||
// expect(error.code).toBe("ETIMEOUT");
|
||||
// resolve();
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
// server.connect();
|
||||
// });
|
||||
// }, 10000); // Increased timeout
|
||||
|
||||
// test("client should handle server close event", async () => {
|
||||
// await new Promise<void>((resolve) => {
|
||||
// let errorEmitted = false;
|
||||
// client.once("error", () => {
|
||||
// errorEmitted = true;
|
||||
// });
|
||||
//
|
||||
// client.once("close", () => {
|
||||
// expect(errorEmitted).toBe(false);
|
||||
// expect(client.status).toBe(0); // OFFLINE
|
||||
// resolve();
|
||||
// });
|
||||
//
|
||||
// server.once("listening", () => {
|
||||
// client.once("connect", () => {
|
||||
// server.close(() => {
|
||||
// setTimeout(() => client.close(), 200);
|
||||
// });
|
||||
// });
|
||||
// });
|
||||
//
|
||||
// server.connect();
|
||||
// });
|
||||
// }, 10000); // Increased timeout
|
||||
});
|
||||
Loading…
Reference in New Issue
Block a user