Files
stack/packages/model-proxy/tests/runner.test.mjs

12 lines
2.3 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { EventEmitter } from 'node:events';
import { mkdtempSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { startVerifiedProxy } from '../src/runner.mjs';
function fixture(){const root=mkdtempSync(join(tmpdir(),'p1-runner-'));return {root,config:{proxy:{port:18432,binary:join(root,'pin/cli-proxy-api')},dataRoot:join(root,'data')},install:{binary:join(root,'pin/cli-proxy-api'),panel:join(root,'pin/static/management.html')}};}
test('runner verifies before spawning and supplies pinned panel and local model without ambient secrets',()=>{const {root,config,install}=fixture();const calls=[],child=new EventEmitter();startVerifiedProxy(config,{env:{HOME:join(root,'home'),MANAGEMENT_PASSWORD:'p1-management',OPENAI_API_KEY:'p1-upstream'},verify:dir=>{calls.push(['verify',dir]);return install;},spawnImpl:(...args)=>{calls.push(['spawn',...args]);return child;}});assert.equal(calls[0][0],'verify');assert.deepEqual(calls[1],['spawn',install.binary,['-config',join(config.dataRoot,'proxy/config.yaml'),'-local-model'],{cwd:join(config.dataRoot,'proxy'),stdio:'inherit',env:{HOME:join(root,'home'),PATH:'/usr/bin:/bin',MANAGEMENT_STATIC_PATH:join(root,'pin/static')}}]);});
test('proxy-start-failed: sync and async spawn failures report code only',()=>{const {config,install}=fixture();assert.throws(()=>startVerifiedProxy(config,{verify:()=>install,spawnImpl:()=>{throw Error('p1-management');}}),e=>e.code==='proxy-start-failed');const child=new EventEmitter(),codes=[];startVerifiedProxy(config,{verify:()=>install,spawnImpl:()=>child,onError:c=>codes.push(c)});child.emit('error',Error('p1-management'));assert.deepEqual(codes,['proxy-start-failed']);});
test('hash refusal prevents spawn and ordinary exit status is propagated',()=>{const {config,install}=fixture();let spawned=false;assert.throws(()=>startVerifiedProxy(config,{verify:()=>{throw Object.assign(Error('proxy-install-invalid'),{code:'proxy-install-invalid'});},spawnImpl:()=>{spawned=true;}}),e=>e.code==='proxy-install-invalid');assert.equal(spawned,false);const child=new EventEmitter(),exits=[];startVerifiedProxy(config,{verify:()=>install,spawnImpl:()=>child,onExit:c=>exits.push(c)});child.emit('exit',7,null);assert.deepEqual(exits,[7]);});