sacm-optimizer / tests /optimizer.test.ts
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/sacm-optimizer
842005b verified
Raw
History Blame Contribute Delete
1.43 kB
import assert from 'node:assert/strict'
import test from 'node:test'
import { SACMOptimizer, type BridgedProject } from '../src/index.js'
const cleanProject: BridgedProject = {
sacmId: 'sacm_123456',
legacyId: 'legacy-1',
legacySource: 'github',
name: 'Clean Project',
payload: { data: { build: 'pass', owner: 'team' } },
importedAt: new Date().toISOString(),
status: 'imported',
integrityHmac: 'present',
}
test('produces quorum for clean bridged projects', () => {
const optimizer = new SACMOptimizer('test-secret')
const proof = optimizer.runConsensus(cleanProject)
assert.equal(proof.quorum, true)
assert.equal(proof.approvalCount, 5)
assert.equal(proof.requiredQuorum, 3)
assert.equal(optimizer.verifyProof(proof), true)
})
test('records rejecting votes for credential-bearing payloads', () => {
const optimizer = new SACMOptimizer('test-secret')
const proof = optimizer.runConsensus({
...cleanProject,
payload: { data: { apiToken: 'blocked' } },
})
const sentinel = proof.votes.find(v => v.agent === 'SENTINEL')
assert.equal(sentinel?.vote, 'reject')
assert.match(sentinel?.rationale ?? '', /Credential-like/)
})
test('refuses projects rejected by bridge', () => {
const optimizer = new SACMOptimizer('test-secret')
assert.throws(() => optimizer.runConsensus({ ...cleanProject, status: 'rejected' }), /rejected at bridge/)
})