import test from 'node:test'; import assert from 'node:assert/strict'; import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { deployedRelease, frontendAssetInfo } from '../server/release-info.mjs'; test('release metadata rejects missing build markers', () => { assert.equal(deployedRelease({}), null); assert.equal(deployedRelease({ APP_RELEASE: 'unknown' }), null); assert.equal(deployedRelease({ SOURCE_COMMIT: 'abc1234' }), 'abc1234'); assert.equal(deployedRelease({ APP_RELEASE: 'release-a', SOURCE_COMMIT: 'release-b' }), 'release-a'); }); test('frontend asset metadata hashes the script referenced by index.html', () => { const root = mkdtempSync(join(tmpdir(), 'ihaleist-release-')); try { mkdirSync(join(root, 'assets')); writeFileSync(join(root, 'index.html'), ''); writeFileSync(join(root, 'assets/index-test.js'), 'console.log("release");\n'); assert.deepEqual(frontendAssetInfo([root]), { path: '/assets/index-test.js', sha256: 'ed81365d3ce25c2e499a43c7d91c72cbc05c6475a19423f18fc3917c96857e80', bytes: 24, }); } finally { rmSync(root, { recursive: true, force: true }); } });