matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
56 lines • 2.82 kB
JavaScript
import { describe, expect, test, vi } from 'vitest';
import { MessageContext, Protocol, RequestMessage } from '../../../roborockCommunication/models/index.js';
import { MessageDeserializer } from '../../../roborockCommunication/protocol/deserializers/messageDeserializer.js';
import { MessageSerializer } from '../../../roborockCommunication/protocol/serializers/messageSerializer.js';
const logger = { debug: vi.fn(), notice: vi.fn(), error: vi.fn() };
describe('MessageSerializer/Deserializer A01 & B01', () => {
test('A01 roundtrip rpc_response', () => {
const userdata = { rriot: { k: 'somek' } };
const ctx = new MessageContext(userdata);
const duid = 'd-a01';
const localKey = '0123456789abcdef';
ctx.registerDevice(duid, localKey, 'A01', 12345);
const serializer = new MessageSerializer(ctx, logger);
const deserializer = new MessageDeserializer(ctx, logger);
const req = new RequestMessage({
messageId: 7,
protocol: Protocol.rpc_response,
// for A01 builder provide dps directly
dps: { [Protocol.rpc_response]: JSON.stringify({ id: 7, result: null }) },
nonce: 12345,
timestamp: Math.floor(Date.now() / 1000),
});
const res = serializer.serialize(duid, req);
expect(res).toHaveProperty('buffer');
const out = deserializer.deserialize(duid, res.buffer, 'local');
// ensure rpc_response dps exists and has an id
const got = out.get(Protocol.rpc_response);
expect(got).toBeDefined();
expect(got.id).toBeDefined();
});
test('B01 roundtrip rpc_response', () => {
const userdata = { rriot: { k: 'otherk' } };
const ctx = new MessageContext(userdata);
const duid = 'd-b01';
const localKey = 'fedcba9876543210';
ctx.registerDevice(duid, localKey, 'B01', 22222);
const serializer = new MessageSerializer(ctx, logger);
const deserializer = new MessageDeserializer(ctx, logger);
const req = new RequestMessage({
messageId: 9,
protocol: Protocol.rpc_response,
// for B01 builder provide dps directly
dps: { [Protocol.rpc_response]: JSON.stringify({ id: 9, result: null }) },
nonce: 22222,
timestamp: Math.floor(Date.now() / 1000),
});
const res = serializer.serialize(duid, req);
expect(res).toHaveProperty('buffer');
const out = deserializer.deserialize(duid, res.buffer, 'local');
// ensure rpc_response dps exists and has an id
const got = out.get(Protocol.rpc_response);
expect(got).toBeDefined();
expect(got.id).toBeDefined();
});
});
//# sourceMappingURL=messageSerializerDeserializer.A01B01.test.js.map