// @vitest-environment node import { mkdtempSync, rmSync, writeFileSync } from 'node:fs' import { tmpdir } from 'node:os' import { join } from 'node:path' import { afterEach, describe, expect, it } from 'vitest' import { deniedHostToolsets, readHostTools, saveHostTools } from '../../src/server/hostToolSettings' let home = '' afterEach(() => { if (home) rmSync(home, { recursive: true, force: true }) }) describe('host tool settings', () => { it('denies server tools until an admin turns the global option off', () => { home = mkdtempSync(join(tmpdir(), 'yaoyao-host-tools-')) expect(readHostTools(home)).toEqual({ denyServerTools: true, scriptMachine: true, serverComputer: true, vm: true, cloud: true }) expect(deniedHostToolsets(home)).toEqual(['terminal', 'file']) expect(saveHostTools(home, { denyServerTools: false })).toEqual({ denyServerTools: false, scriptMachine: true, serverComputer: true, vm: true, cloud: true }) expect(deniedHostToolsets(home)).toEqual([]) writeFileSync(join(home, 'host-tools.json'), '{') expect(deniedHostToolsets(home)).toEqual(['terminal', 'file']) }) it('keeps old files that only stored the server-tool switch', () => { home = mkdtempSync(join(tmpdir(), 'yaoyao-host-tools-')) writeFileSync(join(home, 'host-tools.json'), JSON.stringify({ denyServerTools: true })) expect(readHostTools(home).scriptMachine).toBe(true) expect(saveHostTools(home, { denyServerTools: true, scriptMachine: false, serverComputer: true, vm: false, cloud: true })).toMatchObject({ scriptMachine: false, vm: false, cloud: true }) }) })