50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
import { EventEmitter } from "@xmpp/events";
|
|
|
|
import Connection from "../index.js";
|
|
|
|
test("rejects with TimeoutError if socket doesn't close", (done) => {
|
|
expect.assertions(2);
|
|
const conn = new Connection();
|
|
conn.socket = new EventEmitter();
|
|
conn.socket.end = () => {};
|
|
conn._closeSocket().catch((err) => {
|
|
expect(err.name).toBe("TimeoutError");
|
|
done();
|
|
});
|
|
expect(conn.status).toBe("disconnecting");
|
|
});
|
|
|
|
test("resolves", (done) => {
|
|
expect.assertions(3);
|
|
const conn = new Connection();
|
|
const sock = new EventEmitter();
|
|
conn._attachSocket(sock);
|
|
sock.emit("connect");
|
|
sock.end = () => {};
|
|
// eslint-disable-next-line promise/catch-or-return
|
|
conn._closeSocket().then(() => {
|
|
expect(conn.status).toBe("disconnect");
|
|
return done();
|
|
});
|
|
expect(conn.status).toBe("disconnecting");
|
|
sock.emit("close");
|
|
expect(conn.status).toBe("disconnect");
|
|
});
|
|
|
|
test("rejects if socket.end throws", (done) => {
|
|
expect.assertions(1);
|
|
|
|
const error = new Error("foobar");
|
|
|
|
const conn = new Connection();
|
|
conn.socket = new EventEmitter();
|
|
conn.socket.end = () => {
|
|
throw error;
|
|
};
|
|
|
|
conn._closeSocket().catch((err) => {
|
|
expect(err).toBe(error);
|
|
done();
|
|
});
|
|
});
|