mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-08-08 01:33:01 +02:00
Use more faithful packet frame parsing
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import {
|
||||
parsePathHops,
|
||||
extractPacketPayloadHex,
|
||||
findContactsByPrefix,
|
||||
calculateDistance,
|
||||
resolvePath,
|
||||
@@ -107,6 +108,28 @@ describe('parsePathHops', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('extractPacketPayloadHex', () => {
|
||||
it('extracts payload from legacy 1-byte-hop packet', () => {
|
||||
expect(extractPacketPayloadHex('0902AABB48656C6C6F')).toBe('48656C6C6F');
|
||||
});
|
||||
|
||||
it('extracts payload from 2-byte-hop packet', () => {
|
||||
expect(extractPacketPayloadHex('0942AABBCCDD48656C6C6F')).toBe('48656C6C6F');
|
||||
});
|
||||
|
||||
it('rejects reserved mode 3', () => {
|
||||
expect(extractPacketPayloadHex('09C1AABBCCDDEEFF')).toBeNull();
|
||||
});
|
||||
|
||||
it('rejects oversized path encoding', () => {
|
||||
expect(extractPacketPayloadHex(`09BF${'AA'.repeat(189)}4869`)).toBeNull();
|
||||
});
|
||||
|
||||
it('rejects packets with no payload after path', () => {
|
||||
expect(extractPacketPayloadHex('0902AABB')).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe('findContactsByPrefix', () => {
|
||||
const contacts: Contact[] = [
|
||||
createContact({
|
||||
|
||||
Reference in New Issue
Block a user