NODEDC_DESIGN_GUIDELINE/scripts/map-cache-resource-contract...

50 lines
2.1 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { DefaultProxy, Resource } from "cesium";
const gatewayProxyBase = "/api/map-gateway/api/map/cache?url=";
function decodedGatewayTarget(resource) {
const browserUrl = new URL(resource.url, "https://foundry.nodedc.test");
assert.equal(browserUrl.pathname, "/api/map-gateway/api/map/cache");
const target = browserUrl.searchParams.get("url");
assert.ok(target);
return new URL(target);
}
test("OSM Buildings external JSON and b3dm inherit the Gateway cache route", () => {
const root = new Resource({
url: "https://assets.ion.cesium.com/asset_depot/96188/OpenStreetMap/tileset.json?v=19&nodedc_client_revision=2",
proxy: new DefaultProxy(gatewayProxyBase),
});
const externalTileset = root.getDerivedResource({ url: "0-0-0.json" });
const buildingTile = externalTileset.getDerivedResource({ url: "14/31780/12975.b3dm" });
const externalTarget = decodedGatewayTarget(externalTileset);
const buildingTarget = decodedGatewayTarget(buildingTile);
assert.equal(externalTarget.pathname, "/asset_depot/96188/OpenStreetMap/0-0-0.json");
assert.equal(buildingTarget.pathname, "/asset_depot/96188/OpenStreetMap/14/31780/12975.b3dm");
for (const target of [externalTarget, buildingTarget]) {
assert.equal(target.searchParams.get("v"), "19");
assert.equal(target.searchParams.get("nodedc_client_revision"), "2");
assert.equal(target.searchParams.has("access_token"), false);
}
});
test("append-only and passthrough cache intent is inherited by Buildings children", () => {
for (const cacheQuery of [
"nodedc_client_revision=2",
"nodedc_client_revision=2&nodedc_cache_mode=passthrough",
"nodedc_client_revision=2&nodedc_cache_refresh=1",
]) {
const root = new Resource({
url: `https://assets.ion.cesium.com/96188/tileset.json?${cacheQuery}`,
proxy: new DefaultProxy(gatewayProxyBase),
});
const target = decodedGatewayTarget(root.getDerivedResource({ url: "root.b3dm" }));
for (const [name, value] of new URLSearchParams(cacheQuery)) {
assert.equal(target.searchParams.get(name), value);
}
}
});