import test from 'brittle' import { BARE_HOLESAIL_STATE_USER, bareHolesailManagedEnvForConnectionId, bareHolesailManagedNormalizeEntry, bareHolesailManagedStatePath, bareHolesailManagedValidateId } from './lib/bare-holesail-managed.js' import { holesailCliParseAdd } from './lib/holesail-cli.js' test('bareHolesailManagedStatePath defaults to ~/.holesail and honors override', (t) => { t.is( bareHolesailManagedStatePath({ USER: 'guest', HOME: '/home/guest' }), BARE_HOLESAIL_STATE_USER ) t.is( bareHolesailManagedStatePath({ USER: 'alice', HOME: '/home/alice' }), BARE_HOLESAIL_STATE_USER ) t.is( bareHolesailManagedStatePath({ USER: 'alice', HOME: '/home/alice', BARE_OS_HOLESAIL_STATE: '/tmp/custom.json' }), '/tmp/custom.json' ) t.is(bareHolesailManagedStatePath({}), BARE_HOLESAIL_STATE_USER) }) test('bareHolesailManagedEnvForConnectionId is identity on env', (t) => { const env = { USER: 'u', HOME: '/home/u', BARE_OS_HOLESAIL_STATE: '/x.json' } const g = bareHolesailManagedEnvForConnectionId(env, 'bare-www-8088') t.is(g, env) const u = bareHolesailManagedEnvForConnectionId(env, 'my-tunnel') t.is(u, env) }) test('bareHolesailManagedValidateId', (t) => { t.ok(bareHolesailManagedValidateId('a').ok) t.ok(bareHolesailManagedValidateId('t1._-x').ok) t.absent(bareHolesailManagedValidateId('').ok) t.absent(bareHolesailManagedValidateId('bad id').ok) }) test('bareHolesailManagedNormalizeEntry server', (t) => { const r = bareHolesailManagedNormalizeEntry({ server: true, port: '8080' }) t.ok(r.ok) t.is(r.entry.server, true) t.is(r.entry.client, false) t.is(r.entry.port, 8080) }) test('bareHolesailManagedNormalizeEntry client needs key', (t) => { const r = bareHolesailManagedNormalizeEntry({ client: true }) t.absent(r.ok) }) test('holesailCliParseAdd', (t) => { const r = holesailCliParseAdd(['t', '--server', '--port', '9000']) t.ok(r.ok) t.is(r.id, 't') t.is(r.entry.server, true) t.is(r.entry.port, 9000) }) test('holesailCliParseAdd implicit hs key', (t) => { const r = holesailCliParseAdd([ 't', '--client', 'hs://s000477b2d983364922df1296a65aeaa2d2a', '--port', '8888' ]) t.ok(r.ok) t.is(r.entry.client, true) t.is(r.entry.key, 'hs://s000477b2d983364922df1296a65aeaa2d2a') t.is(r.entry.port, 8888) })