hololake-system-architecture/product-source/hololake-native-desktop/scripts/dynamic-world-surface-admission.test.mjs

43 lines
2.5 KiB
JavaScript

import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import test from 'node:test'
const read = (path) => readFileSync(new URL(`../${path}`, import.meta.url), 'utf8')
const contract = JSON.parse(read('contracts/dynamic-language-world-visual-system.json'))
const registry = JSON.parse(read('contracts/numbered-ipc-registry.json'))
const modulePackage = JSON.parse(read('fixtures/module-packages/HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001-0.1.0.ghmod'))
const rust = read('src-tauri/src/world_climate.rs')
const frontend = read('src/main.tsx')
const styles = read('src/styles.css')
test('dynamic world surface is signed, opt-in and cannot mutate world facts', () => {
assert.equal(modulePackage.manifest.moduleNumber, 'HLP-MOD-OFFICIAL-DYNAMIC-WORLD-SURFACE-0001')
assert.equal(modulePackage.manifest.registrationClass, 'OFFICIAL_LIGHTHOUSE')
assert.equal(modulePackage.manifest.adapter, 'dynamic-language-world-surface-v1')
assert.deepEqual(modulePackage.manifest.permissions, ['REALITY_TIME_READ', 'PUBLIC_WEATHER_QUERY'])
assert.equal(modulePackage.payload.adapterConfig.routingPermissionOrFactMutation, false)
assert.equal(contract.visual_lock.climate_changes_routing_permission_or_fact, false)
assert.equal(contract.visual_lock.daily_sampling_domain_changes_open_domain, false)
})
test('climate query crosses the unique numbered route and fails closed before activation', () => {
const route = registry.operations.find((item) => item.alias === 'get_world_climate')
assert.equal(route.operation_number, 'HLP-NIPC-OP-0147')
assert.equal(route.module_number, 'HLP-NIPC-MOD-0031')
assert.equal(route.target_number, 'HLP-NIPC-TGT-0031')
assert.equal(route.admission, 'VERIFIED_HUMAN_ROUTE')
assert.match(rust, /require_active_module_adapter/)
assert.doesNotMatch(rust, /#\[tauri::command\]/)
assert.doesNotMatch(frontend, /from ['"]@tauri-apps\/api\/core['"]/)
})
test('official shell and five lake themes remain the only admitted layout', () => {
assert.equal(contract.visual_lock.layout, 'EXISTING_OFFICIAL_FIVE_LAKE_SHELL_UNCHANGED')
assert.equal(contract.visual_lock.themes.length, 5)
assert.equal(contract.donor_disposition.traditional_surface, 'REJECTED_DUPLICATE_SHELL_EIGHT_THEMES_AND_SIMULATED_STATUS')
assert.match(frontend, /夜湖星光/)
assert.match(frontend, /天气源暂不可用;湖面只使用北京时间,不生成假天气。/)
assert.match(styles, /\.world-climate-veil/)
assert.doesNotMatch(frontend, /语料库新增 217 条/)
assert.doesNotMatch(frontend, /频道活动 · 七日/)
})