OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay / test / unit / truenas-package.test.js

65 lines · javascript ref:
import test from 'brittle'
import { execFile } from 'node:child_process'
import { appendFile, cp, mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'
import { tmpdir } from 'node:os'
import path from 'node:path'

test('TrueNAS Community package remains release-aligned and security-scoped', async (t) => {
  const result = await new Promise((resolve) => {
    execFile(process.execPath, ['scripts/check-truenas-package.mjs'], {
      cwd: process.cwd(),
      env: { PATH: process.env.PATH || '' },
      timeout: 10000
    }, (err, stdout, stderr) => {
      resolve({
        status: err && typeof err.code === 'number' ? err.code : 0,
        stdout,
        stderr
      })
    })
  })

  t.is(result.status, 0, result.stderr)
  t.ok(result.stdout.includes('TrueNAS Community package validates for Blindspark.'))
})

test('TrueNAS validator rejects actual vendored source drift', async (t) => {
  const fixture = await mkdtemp(path.join(tmpdir(), 'hiverelay-truenas-integrity-'))
  t.teardown(async () => {
    await rm(fixture, { recursive: true, force: true })
  })

  await mkdir(path.join(fixture, 'scripts'), { recursive: true })
  await cp('truenas-app', path.join(fixture, 'truenas-app'), { recursive: true })
  await writeFile(path.join(fixture, 'package.json'), JSON.stringify({ version: '1.0.0-rc.1' }) + '\n')
  await writeFile(
    path.join(fixture, 'scripts', 'check-truenas-package.mjs'),
    await readFile('scripts/check-truenas-package.mjs')
  )
  await appendFile(
    path.join(fixture, 'truenas-app', 'templates', 'library', 'base_v2_3_8', 'render.py'),
    '\n# unauthorized drift\n'
  )

  const result = await runValidator(fixture)
  t.is(result.status, 1)
  t.ok(result.stderr.includes('computed vendor content SHA-256'))
  t.ok(result.stderr.includes('normalized vendor content/upstream Git tree binding'))
})

function runValidator (cwd) {
  return new Promise((resolve) => {
    execFile(process.execPath, ['scripts/check-truenas-package.mjs'], {
      cwd,
      env: { PATH: process.env.PATH || '' },
      timeout: 10000
    }, (err, stdout, stderr) => {
      resolve({
        status: err && typeof err.code === 'number' ? err.code : 0,
        stdout,
        stderr
      })
    })
  })
}