basant307/AI_Governance_Project
048
1import { describe, it, expect, beforeEach, afterEach } from 'vitest';2import {3 loadInstallState,4 saveInstallState,5 isPackageSpecApproved,6 installStatePathFor,7} from './install-state.js';8import { mkdtempSync, rmSync } from 'node:fs';9import { tmpdir } from 'node:os';10import { join as pathJoin } from 'node:path';11 12describe('install-state', () => {13 let tmpHome: string;14 15 beforeEach(() => {16 tmpHome = mkdtempSync(pathJoin(tmpdir(), 'qwen-cu-test-'));17 });18 19 afterEach(() => {20 rmSync(tmpHome, { recursive: true, force: true });21 });22 23 it('returns undefined when no state file exists', async () => {24 expect(await loadInstallState(tmpHome)).toBeUndefined();25 });26 27 it('round-trips state', async () => {28 await saveInstallState(tmpHome, {29 approvedPackageSpec: 'cua-driver-rs@0.5.2',30 approvedAtIso: '2026-05-28T10:00:00Z',31 });32 const loaded = await loadInstallState(tmpHome);33 expect(loaded).toEqual({34 approvedPackageSpec: 'cua-driver-rs@0.5.2',35 approvedAtIso: '2026-05-28T10:00:00Z',36 });37 });38 39 it('isPackageSpecApproved returns false when no state', async () => {40 expect(await isPackageSpecApproved(tmpHome, 'cua-driver-rs@0.5.2')).toBe(41 false,42 );43 });44 45 it('isPackageSpecApproved returns true on exact match', async () => {46 await saveInstallState(tmpHome, {47 approvedPackageSpec: 'cua-driver-rs@0.5.2',48 approvedAtIso: '2026-05-28T10:00:00Z',49 });50 expect(await isPackageSpecApproved(tmpHome, 'cua-driver-rs@0.5.2')).toBe(51 true,52 );53 });54 55 it('isPackageSpecApproved returns false when version differs', async () => {56 await saveInstallState(tmpHome, {57 approvedPackageSpec: 'cua-driver-rs@0.5.2',58 approvedAtIso: '2026-05-28T10:00:00Z',59 });60 expect(await isPackageSpecApproved(tmpHome, 'cua-driver-rs@0.6.0')).toBe(61 false,62 );63 });64 65 it('installStatePathFor returns correct path', () => {66 const path = installStatePathFor(tmpHome);67 expect(path).toBe(68 pathJoin(tmpHome, '.qwen', 'computer-use', 'installed.json'),69 );70 });71});72 