2025-11-05 17:04:23 -03:00

46 lines
1.3 KiB
JavaScript

import { mockClient } from "@xmpp/test";
import { tick } from "@xmpp/events";
test("emits ack when the server ackownledge stanzas", async () => {
const { entity } = mockClient();
entity.streamManagement.enabled = true;
expect(entity.streamManagement.outbound).toBe(0);
expect(entity.streamManagement.outbound_q).toBeEmpty();
// expect(entity.streamManagement.enabled).toBe(true);
await entity.send(<message id="a" />);
expect(entity.streamManagement.outbound).toBe(0);
expect(entity.streamManagement.outbound_q).toHaveLength(1);
let acks = 0;
entity.streamManagement.on("ack", (stanza) => {
expect(stanza.attrs.id).toBe("a");
acks++;
});
entity.mockInput(<a xmlns="urn:xmpp:sm:3" h="1" />);
await tick();
expect(acks).toBe(1);
expect(entity.streamManagement.outbound).toBe(1);
expect(entity.streamManagement.outbound_q).toHaveLength(0);
});
test("sends an <a/> element before closing", async () => {
const { entity, streamManagement } = mockClient();
streamManagement.enabled = true;
streamManagement.inbound = 42;
entity.status = "online";
const promise_disconnect = entity.disconnect();
expect(await entity.catchOutgoing()).toEqual(
<a xmlns="urn:xmpp:sm:3" h={streamManagement.inbound} />,
);
await promise_disconnect;
});