43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
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);
|
|
});
|