Files
orca/src/cli/runtime/environments.test.ts
T
2026-05-14 23:13:37 -07:00

69 lines
2.3 KiB
TypeScript

import { mkdtempSync, statSync } from 'fs'
import { tmpdir } from 'os'
import { join } from 'path'
import { describe, expect, it } from 'vitest'
import { encodePairingOffer } from '../../shared/pairing'
import {
addEnvironmentFromPairingCode,
getEnvironmentStorePath,
listEnvironments,
removeEnvironment,
resolveEnvironmentPairingOffer
} from './environments'
function pairingCode(endpoint = 'ws://127.0.0.1:6768'): string {
return encodePairingOffer({
v: 2,
endpoint,
deviceToken: 'device-token',
publicKeyB64: Buffer.from(new Uint8Array(32).fill(1)).toString('base64')
})
}
describe('CLI runtime environments', () => {
it('saves, resolves, and removes a paired environment', () => {
const userDataPath = mkdtempSync(join(tmpdir(), 'orca-env-store-'))
const saved = addEnvironmentFromPairingCode(userDataPath, {
name: 'workstation',
pairingCode: pairingCode(),
now: 100
})
expect(listEnvironments(userDataPath)).toHaveLength(1)
expect(resolveEnvironmentPairingOffer(userDataPath, 'workstation')).toMatchObject({
endpoint: 'ws://127.0.0.1:6768',
deviceToken: 'device-token'
})
expect(resolveEnvironmentPairingOffer(userDataPath, saved.id)).toMatchObject({
endpoint: 'ws://127.0.0.1:6768'
})
expect((statSync(getEnvironmentStorePath(userDataPath)).mode & 0o777).toString(8)).toBe('600')
const removed = removeEnvironment(userDataPath, 'workstation')
expect(removed.id).toBe(saved.id)
expect(listEnvironments(userDataPath)).toEqual([])
})
it('rejects an environment with the same name', () => {
const userDataPath = mkdtempSync(join(tmpdir(), 'orca-env-store-'))
const first = addEnvironmentFromPairingCode(userDataPath, {
name: 'workstation',
pairingCode: pairingCode('ws://127.0.0.1:1111'),
now: 100
})
expect(() =>
addEnvironmentFromPairingCode(userDataPath, {
name: 'workstation',
pairingCode: pairingCode('ws://127.0.0.1:2222'),
now: 200
})
).toThrow('A server named "workstation" already exists.')
expect(listEnvironments(userDataPath)).toHaveLength(1)
expect(resolveEnvironmentPairingOffer(userDataPath, 'workstation').endpoint).toBe(
'ws://127.0.0.1:1111'
)
expect(listEnvironments(userDataPath)[0]?.id).toBe(first.id)
})
})