25 lines
1.4 KiB
JavaScript
25 lines
1.4 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import { nativeAIUIProvenance } from '../../native-aiui-provenance.ts'
|
|
const commit = 'a'.repeat(40)
|
|
const missingGit = () => { throw new Error('Git checkout unavailable') }
|
|
test('explicit Docker demo binds CI revision without claiming clean production custody', () => {
|
|
assert.deepEqual(nativeAIUIProvenance('/', {DOCKER_BUILD:'true',VITE_DEMO:'1',ARCHY_SOURCE_REVISION:commit}, missingGit),
|
|
{mode:'native-demo',source_commit:commit,source_dirty:true})
|
|
})
|
|
test('demo provenance refuses missing, abbreviated and malformed revisions', () => {
|
|
for (const revision of ['', 'main', 'abc', 'A'.repeat(40)]) {
|
|
assert.throws(() => nativeAIUIProvenance('/',{DOCKER_BUILD:'true',VITE_DEMO:'true',ARCHY_SOURCE_REVISION:revision},missingGit),/full lowercase/)
|
|
}
|
|
})
|
|
test('source revision environment cannot bypass production Git requirements', () => {
|
|
for (const env of [{ARCHY_SOURCE_REVISION:commit},{DOCKER_BUILD:'true',VITE_DEMO:'0',ARCHY_SOURCE_REVISION:commit}]) {
|
|
assert.throws(() => nativeAIUIProvenance('/',env,missingGit),/Git checkout unavailable/)
|
|
}
|
|
})
|
|
test('production uses actual Git revision and dirty state', () => {
|
|
assert.deepEqual(nativeAIUIProvenance('/',{},args => args[0]==='rev-parse'?commit:''),
|
|
{mode:'native',source_commit:commit,source_dirty:false})
|
|
assert.equal(nativeAIUIProvenance('/',{},args => args[0]==='rev-parse'?commit:' M file').source_dirty,true)
|
|
})
|