mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
Seven contributed CCTV camera packs (Ontario 511, Fintraffic Finland, DriveBC, TxDOT Texas, Estonia Tallinn + Tarktee, Warendorf, Live Traffic NSW) on a fair per-pack catalog cap; semantic camera labels; monitor planes lifted clear of the terrain from a precomputed, bundled ground-height dataset. Default catalog 800 → 3,446 cameras. Full context in PR #433. Co-authored-by: sendmebits <[email protected]> Co-authored-by: avocadoAgent <[email protected]> Co-authored-by: Alex Harvey <[email protected]> Co-authored-by: Jason Meredith <[email protected]> Co-authored-by: Daniel Smith <[email protected]> Co-authored-by: Vladimir Sobolev <[email protected]> Co-authored-by: Matthias Schneider <[email protected]> Co-authored-by: Cyber Knight <[email protected]> Co-authored-by: NovaSoft Australia <[email protected]>
82 lines
2.3 KiB
JavaScript
82 lines
2.3 KiB
JavaScript
import { test } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import fs from 'node:fs';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import { loadWarendorfSourcesFromCatalog } from '../../server/providers/cctv/sources.js';
|
|
|
|
test('Warendorf catalog registers the Marktplatz webcam on official hosts only', (t) => {
|
|
t.mock.method(console, 'log', () => {});
|
|
const cameras = loadWarendorfSourcesFromCatalog();
|
|
assert.deepEqual(
|
|
cameras.map((camera) => camera.id),
|
|
['warendorf-marktplatz-rathaus'],
|
|
);
|
|
for (const camera of cameras) {
|
|
assert.ok(
|
|
/^https?:\/\/(webcam\.warendorf\.de|www\.kreis-warendorf\.de)\//.test(
|
|
camera.url,
|
|
),
|
|
camera.url,
|
|
);
|
|
assert.equal(camera.snapshotUrl, camera.url);
|
|
assert.equal(camera.sourceKind, 'municipal-webcam');
|
|
assert.equal(camera.poseSource, 'curated');
|
|
assert.match(camera.license, /^Public municipal webcam data/);
|
|
}
|
|
});
|
|
|
|
test('Warendorf loader tolerates a missing catalog file', (t) => {
|
|
t.mock.method(console, 'warn', () => {});
|
|
assert.deepEqual(
|
|
loadWarendorfSourcesFromCatalog({ sourceRoot: '/nonexistent' }),
|
|
[],
|
|
);
|
|
});
|
|
|
|
test('Warendorf loader skips malformed rows without throwing', (t) => {
|
|
t.mock.method(console, 'log', () => {});
|
|
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'gev-warendorf-'));
|
|
fs.mkdirSync(path.join(dir, 'config'));
|
|
fs.writeFileSync(
|
|
path.join(dir, 'config', 'cctv_sources.warendorf.json'),
|
|
JSON.stringify([
|
|
{
|
|
id: { toString: null },
|
|
url: 'https://www.kreis-warendorf.de/a.jpg',
|
|
lat: 51.9,
|
|
lon: 7.9,
|
|
},
|
|
{
|
|
id: 'ok',
|
|
url: 'https://www.kreis-warendorf.de/a.jpg',
|
|
lat: 51.9,
|
|
lon: 7.9,
|
|
},
|
|
{
|
|
id: 'text-coords',
|
|
url: 'https://www.kreis-warendorf.de/a.jpg',
|
|
lat: '51.9',
|
|
lon: '7.9',
|
|
},
|
|
{
|
|
id: 'null-island',
|
|
url: 'https://www.kreis-warendorf.de/a.jpg',
|
|
lat: 0,
|
|
lon: 0,
|
|
},
|
|
{
|
|
id: 'off-host',
|
|
url: 'https://evil.example/a.jpg',
|
|
lat: 51.9,
|
|
lon: 7.9,
|
|
},
|
|
]),
|
|
);
|
|
const cameras = loadWarendorfSourcesFromCatalog({ sourceRoot: dir });
|
|
assert.deepEqual(
|
|
cameras.map((camera) => camera.id),
|
|
['ok'],
|
|
);
|
|
});
|