feat(provider): catalogue complete Gelios data surface
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { validateProviderCapabilityCatalog } from "../src/index.mjs";
|
||||
import { geliosCapabilityCatalogV1, geliosProviderPackageV7 } from "../providers/gelios/index.mjs";
|
||||
|
||||
assert.deepEqual(validateProviderCapabilityCatalog(geliosCapabilityCatalogV1), { ok: true, errors: [] });
|
||||
|
||||
const expectedUnitRoots = [
|
||||
"activatedAt", "availableToUsers", "blockTime", "commands", "counters", "createdAt",
|
||||
"creator", "currentUserAccess", "customFields", "driver", "extraInfo", "fuelParams",
|
||||
"hwDecryptKey", "hwManufacturer", "hwType", "id", "imei", "imeiIsVisible", "isBlock",
|
||||
"isFree", "lastMsg", "lastSensorsVal", "maintenancePlan", "name", "phone", "phone2",
|
||||
"phone2IsVisible", "phoneIsVisible", "preSetCommandGroup", "removed", "removedAt", "sensors",
|
||||
"stationaryLat", "stationaryLon", "storageInfo", "tripParams", "unblockTime", "unitType",
|
||||
];
|
||||
assert.deepEqual(geliosCapabilityCatalogV1.coverage.sourceRoots, expectedUnitRoots);
|
||||
|
||||
const expectedIncludeFlags = [
|
||||
"inclextra", "incltrip", "inclfuel", "inclcntrs", "inclcstmflds", "inclsnsrs",
|
||||
"inclcmmnds", "incldrvrs", "inclstinf", "inclusersav", "incllsv", "inclplan",
|
||||
];
|
||||
assert.deepEqual(geliosCapabilityCatalogV1.queryFlags.map(({ id }) => id), expectedIncludeFlags);
|
||||
|
||||
const unitCapability = geliosProviderPackageV7.capabilities.find(({ id }) => id === "gelios.units.current.read");
|
||||
assert.ok(unitCapability);
|
||||
for (const enabledFlag of Object.keys(unitCapability.request.query)) {
|
||||
assert.ok(expectedIncludeFlags.includes(enabledFlag), `v7 query flag is missing from the capability catalog: ${enabledFlag}`);
|
||||
}
|
||||
|
||||
assert.deepEqual(
|
||||
geliosCapabilityCatalogV1.capabilities.filter(({ status }) => status === "implemented").map(({ id }) => id),
|
||||
["gelios.units.current.read", "gelios.geozones.current.read"],
|
||||
);
|
||||
assert.equal(
|
||||
geliosCapabilityCatalogV1.capabilities.filter(({ classification }) => classification === "control").every(({ status }) => status === "disabled"),
|
||||
true,
|
||||
);
|
||||
|
||||
const restrictedPublish = structuredClone(geliosCapabilityCatalogV1);
|
||||
restrictedPublish.dataFamilies.find(({ id }) => id === "gelios.unit.device_identifiers").disposition = "publish";
|
||||
restrictedPublish.dataFamilies.find(({ id }) => id === "gelios.unit.device_identifiers").dataProductIds = ["unsafe.identifiers.current.v1"];
|
||||
assert.equal(validateProviderCapabilityCatalog(restrictedPublish).ok, false);
|
||||
|
||||
const missingCoverage = structuredClone(geliosCapabilityCatalogV1);
|
||||
missingCoverage.dataFamilies.find(({ id }) => id === "gelios.unit.identity").sourcePaths = ["name", "unitType.id"];
|
||||
assert.ok(validateProviderCapabilityCatalog(missingCoverage).errors.includes("coverage.source_root_unaccounted:id"));
|
||||
|
||||
const enabledControl = structuredClone(geliosCapabilityCatalogV1);
|
||||
enabledControl.capabilities.find(({ id }) => id === "gelios.unit.command.send").status = "catalogued";
|
||||
assert.equal(validateProviderCapabilityCatalog(enabledControl).ok, false);
|
||||
|
||||
console.log("Gelios provider capability catalog: ok");
|
||||
Reference in New Issue
Block a user