Add node location access RPCs and operator visibility

This commit is contained in:
William Valentin
2026-02-16 12:30:55 -08:00
parent 1d16cd54e6
commit fe8674e108
19 changed files with 693 additions and 15 deletions
+67
View File
@@ -3,6 +3,8 @@ import {
isValidRequest,
parseMessage,
parseNodeRegisterParams,
parseNodeLocationSetParams,
parseNodeLocationGetParams,
makeResponse,
makeError,
makeEvent,
@@ -104,6 +106,71 @@ describe('protocol', () => {
});
});
describe('parseNodeLocationSetParams', () => {
it('parses valid node location set params', () => {
const parsed = parseNodeLocationSetParams({
connectionId: 'conn-1',
latitude: 40.7128,
longitude: -74.0060,
accuracyMeters: 12.5,
source: 'gps',
});
expect(parsed).toEqual({
connectionId: 'conn-1',
latitude: 40.7128,
longitude: -74.006,
accuracyMeters: 12.5,
altitudeMeters: undefined,
headingDegrees: undefined,
speedMps: undefined,
source: 'gps',
capturedAt: undefined,
});
});
it('rejects invalid node location set params', () => {
expect(parseNodeLocationSetParams({
connectionId: 'conn-1',
latitude: 200,
longitude: -74,
})).toBeNull();
expect(parseNodeLocationSetParams({
connectionId: 'conn-1',
latitude: 10,
longitude: -190,
})).toBeNull();
expect(parseNodeLocationSetParams({
connectionId: 'conn-1',
latitude: 10,
longitude: 20,
source: 'beacon',
})).toBeNull();
expect(parseNodeLocationSetParams({
connectionId: 'conn-1',
latitude: 10,
longitude: 20,
headingDegrees: 361,
})).toBeNull();
});
});
describe('parseNodeLocationGetParams', () => {
it('parses valid node location get params', () => {
const parsed = parseNodeLocationGetParams({
connectionId: 'conn-1',
});
expect(parsed).toEqual({
connectionId: 'conn-1',
});
});
it('rejects invalid node location get params', () => {
expect(parseNodeLocationGetParams({})).toBeNull();
expect(parseNodeLocationGetParams({ connectionId: '' })).toBeNull();
expect(parseNodeLocationGetParams(null)).toBeNull();
});
});
describe('makeResponse', () => {
it('creates a response message', () => {
expect(makeResponse(1, { status: 'ok' })).toEqual({