feat(core): add ontology-backed asset and host runtime
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import test from "node:test";
|
||||
|
||||
const migrationUrl = new URL(
|
||||
"../migrations/016_device_asset_infrastructure_ontology.sql",
|
||||
import.meta.url,
|
||||
);
|
||||
const repositoryUrl = new URL("../src/postgres-repository.mjs", import.meta.url);
|
||||
|
||||
test("ontology migration is additive and encodes the official entity identifiers", async () => {
|
||||
const sql = await readFile(migrationUrl, "utf8");
|
||||
for (const table of [
|
||||
"device_assets",
|
||||
"device_asset_bindings",
|
||||
"device_infrastructure_hosts",
|
||||
"device_infrastructure_deployments",
|
||||
"device_infrastructure_service_instances",
|
||||
"device_health_observations",
|
||||
]) {
|
||||
assert.match(sql, new RegExp(`create table if not exists ${table}`, "i"));
|
||||
}
|
||||
for (const entityId of [
|
||||
"asset.asset",
|
||||
"device.asset_binding",
|
||||
"infrastructure.host",
|
||||
"infrastructure.deployment",
|
||||
"infrastructure.service_instance",
|
||||
"observation.health_observation",
|
||||
]) {
|
||||
assert.equal(sql.includes(`'${entityId}'`), true);
|
||||
}
|
||||
assert.equal(sql.includes("229c61c02a790906"), true);
|
||||
for (const commandKind of [
|
||||
"asset.ensure",
|
||||
"asset_binding.ensure",
|
||||
"asset_binding.close",
|
||||
"infrastructure_host.ensure",
|
||||
"infrastructure_endpoint.ensure",
|
||||
"infrastructure_deployment.ensure",
|
||||
"infrastructure_service_instance.ensure",
|
||||
"health_observation.record",
|
||||
]) {
|
||||
assert.equal(sql.includes(`'${commandKind}'`), true);
|
||||
}
|
||||
assert.doesNotMatch(sql, /insert\s+into\s+device_(?:assets|infrastructure_hosts)/i);
|
||||
assert.doesNotMatch(sql, /gelios|arusnavi|beget|hetzner|aws/i);
|
||||
});
|
||||
|
||||
test("ontology migration follows integration identity", async () => {
|
||||
const source = await readFile(repositoryUrl, "utf8");
|
||||
assert.ok(
|
||||
source.indexOf("015_device_integration_identity.sql")
|
||||
< source.indexOf("016_device_asset_infrastructure_ontology.sql"),
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user