hololake-system-architecture/product-source/hololake-native-desktop/scripts/online-marketplace.test.mjs

60 lines
3 KiB
JavaScript
Raw Normal View History

import assert from 'node:assert/strict'
import { createHash } from 'node:crypto'
import { readFile } from 'node:fs/promises'
import { basename, join } from 'node:path'
import test from 'node:test'
const root = new URL('..', import.meta.url).pathname
const contract = JSON.parse(await readFile(join(root, 'contracts/online-marketplace.json'), 'utf8'))
const registry = JSON.parse(await readFile(join(root, 'contracts/numbered-ipc-registry.json'), 'utf8'))
const frontend = await readFile(join(root, 'src/main.tsx'), 'utf8')
const runtime = await readFile(join(root, 'src-tauri/src/online_marketplace.rs'), 'utf8')
function canonical(value) {
if (Array.isArray(value)) return value.map(canonical)
if (value && typeof value === 'object') {
return Object.fromEntries(Object.keys(value).sort().map((key) => [key, canonical(value[key])]))
}
return value
}
test('one online marketplace keeps physical modules and cognitive skills on separate trust chains', () => {
assert.equal(contract.humanExperience.oneMarketplaceTwoSections, true)
assert.equal(contract.artifactKinds.PHYSICAL_MODULE.installation, 'DOWNLOAD_VERIFY_INSTALL_MOUNT_SELF_TEST')
assert.equal(contract.artifactKinds.COGNITIVE_SKILL.installation, 'DOWNLOAD_VERIFY_STORE_ACTIVE_READONLY')
assert.equal(contract.artifactKinds.COGNITIVE_SKILL.executionAuthority, false)
assert.deepEqual(contract.artifactKinds.COGNITIVE_SKILL.systemPermissions, [])
assert.equal(contract.sourceRepositoryBoundary.clientClonesRepository, false)
assert.equal(contract.sourceRepositoryBoundary.clientExecutesRepository, false)
assert.match(runtime, /entry\.artifact_kind == "PHYSICAL_MODULE"/)
assert.match(runtime, /install_skill_at/)
})
test('marketplace lifecycle is reachable only through exact numbered operations', () => {
const aliases = registry.operations.filter((operation) => operation.module_number === 'HLP-NIPC-MOD-0033').map((operation) => operation.alias)
assert.deepEqual(aliases, [
'get_marketplace_snapshot',
'sync_marketplace_catalog',
'install_marketplace_item',
'uninstall_marketplace_item',
'rollback_marketplace_item',
'get_active_cognitive_skills',
])
for (const alias of aliases.slice(0, 5)) assert.match(frontend, new RegExp(`['"]${alias}['"]`))
assert.match(frontend, /只有零点原核与企业发布双签同时通过/)
})
for (const file of [
'HLP-SKILL-OFFICIAL-DELIVERY-VERIFICATION-0001-0.1.0.ghskill',
'HLP-SKILL-OFFICIAL-MODULE-BOUNDARY-REVIEW-0001-0.1.0.ghskill',
]) {
test(`${basename(file)} is a read-only skill with an exact canonical payload digest`, async () => {
const skill = JSON.parse(await readFile(join(root, 'marketplace/skills', file), 'utf8'))
const digest = createHash('sha256').update(JSON.stringify(canonical(skill.payload))).digest('hex')
assert.equal(skill.schema, 'hololake.cognitive-skill-package/v1')
assert.equal(skill.manifest.executionAuthority, false)
assert.equal(skill.manifest.skillReadonlyGuarantee, true)
assert.deepEqual(skill.manifest.permissions, [])
assert.equal(skill.manifest.contentDigest, digest)
})
}