import { MessageTypes } from "../../src/common"; import { packers, unpackers } from "../../src/mapping"; const KEY = new Uint8Array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, ]); test("Create a basic message (0x0001) packet.", () => { // Given const encoder = new TextEncoder(); const message = encoder.encode("Hello, World!"); // When const packedPacket = packers[MessageTypes.Basic](message, KEY); // Then // We can't check the contents of the data as it's encrypted with a random nonce. // Check the message type and length. expect(packedPacket.slice(0, 4)).toMatchObject( new Uint8Array([0x00, 0x01, 0x00, 0x2d]), ); // Check the total length is as expected. expect(packedPacket.length).toBe(49); }); test("Parse a basic message (0x0001).", () => { // Given const encoder = new TextEncoder(); const originalMessage = encoder.encode("Test message"); // First encrypt the message to get valid encrypted data const encryptedData = packers[MessageTypes.Basic](originalMessage, KEY); // Extract just the data portion (skip the 4-byte header) const dataOnly = encryptedData.slice(4); // When const unpackedMessage = unpackers[MessageTypes.Basic](dataOnly, KEY); // Then expect(unpackedMessage).toEqual(originalMessage); });