jest.mock("tls"); import tls from "node:tls"; import { mockClient, promise, delay, mockSocket } from "@xmpp/test"; import { EventEmitter } from "@xmpp/events"; test("success", async () => { const { entity } = mockClient(); entity.socket = mockSocket(); const { socket, options } = entity; options.domain = "foobar"; tls.connect.mockImplementation(() => { return new EventEmitter(); }); entity.mockInput( , ); expect(await promise(entity, "send")).toEqual( , ); entity.mockInput(); await delay(); expect(tls.connect).toHaveBeenCalledTimes(1); expect(tls.connect).toHaveBeenCalledWith({ socket, host: "foobar" }); }); test("failure", async () => { const { entity } = mockClient(); entity.socket = mockSocket(); entity.mockInput( , ); expect(await promise(entity, "send")).toEqual( , ); entity.mockInput(); const err = await promise(entity, "error"); expect(err instanceof Error).toBe(true); expect(err.message).toBe("STARTTLS_FAILURE"); });