import { describe, expect, it } from "@jest/globals"; import { Client } from "../../../src/models/client"; import { Realm } from "../../../src/models/realm"; import { CheckBrokenConnections } from "../../../src/services/checkBrokenConnections"; import { wait } from "../../utils"; describe("CheckBrokenConnections", () => { it("should remove client after 2 checks", async () => { const realm = new Realm(); const doubleCheckTime = 55; //~ equals to checkBrokenConnections.checkInterval * 2 const checkBrokenConnections = new CheckBrokenConnections({ realm, config: { alive_timeout: doubleCheckTime }, checkInterval: 30, }); const client = new Client({ id: "id", token: "" }); realm.setClient(client, "id"); checkBrokenConnections.start(); await wait(checkBrokenConnections.checkInterval * 2 + 30); expect(realm.getClientById("id")).toBeUndefined(); checkBrokenConnections.stop(); }); it("should remove client after 1 ping", async () => { const realm = new Realm(); const doubleCheckTime = 55; //~ equals to checkBrokenConnections.checkInterval * 2 const checkBrokenConnections = new CheckBrokenConnections({ realm, config: { alive_timeout: doubleCheckTime }, checkInterval: 30, }); const client = new Client({ id: "id", token: "" }); realm.setClient(client, "id"); checkBrokenConnections.start(); //set ping after first check await wait(checkBrokenConnections.checkInterval); client.setLastPing(new Date().getTime()); await wait(checkBrokenConnections.checkInterval * 2 + 10); expect(realm.getClientById("id")).toBeUndefined(); checkBrokenConnections.stop(); }); });