test fix
This commit is contained in:
@@ -337,8 +337,9 @@ export function bareHolesailManagedDebugEnabled(ctx, env) {
|
||||
}
|
||||
|
||||
/**
|
||||
* When a managed **server** is live, persist `hs.info.url` into `state.json` as `key` whenever it is
|
||||
* missing or differs (stale key). Keeps `holesail list`, on-disk state, and the running tunnel aligned.
|
||||
* When a managed **server** is live, persist `hs.info.url` into `state.json` as `key` **only if** the row
|
||||
* has no `key` yet (first mint). Never replaces an existing persisted `key` — operators trust `state.json`
|
||||
* as source of truth; starting the process already used that entry.
|
||||
* @param {Record<string, unknown>} ctx
|
||||
* @param {Record<string, string | undefined>} env
|
||||
* @param {string} id
|
||||
@@ -353,7 +354,7 @@ export async function bareHolesailManagedSyncPersistedServerKey(ctx, env, id) {
|
||||
const row = /** @type {Record<string, unknown>} */ (cur)
|
||||
if (!bareHolesailEnvTruthy(row.server)) return false
|
||||
const prev = String(row.key ?? '').trim()
|
||||
if (prev === url) return false
|
||||
if (prev) return false
|
||||
row.key = url
|
||||
state.connections[id] = row
|
||||
await bareHolesailManagedWriteState(ctx, env, state)
|
||||
|
||||
@@ -93,7 +93,13 @@ export async function ensureBareOsWwwHolesailTunnel(ctx, env, port) {
|
||||
}
|
||||
}
|
||||
|
||||
state.connections[id] = want
|
||||
/** @type {Record<string, unknown>} */
|
||||
const next = { ...want }
|
||||
if (existing && typeof existing === 'object') {
|
||||
const k = String(/** @type {Record<string, unknown>} */ (existing).key ?? '').trim()
|
||||
if (k) next.key = k
|
||||
}
|
||||
state.connections[id] = next
|
||||
await bareHolesailManagedWriteState(ctx, gEnv, state)
|
||||
void path
|
||||
if (bareHolesailManagedServiceIsRunning()) {
|
||||
|
||||
@@ -185,6 +185,48 @@ test('ensureBareOsWwwHolesailTunnel persists managed server entry', async (t) =>
|
||||
rmSync(dir, { recursive: true, force: true })
|
||||
})
|
||||
|
||||
test('ensureBareOsWwwHolesailTunnel preserves existing hs key when normalizing row', async (t) => {
|
||||
const dir = testCorestoreDir('wwwhskey')
|
||||
const store = new Corestore(dir)
|
||||
const sys = new Hyperdrive(store)
|
||||
const personal = new Hyperdrive(store.namespace('pwwhsk'))
|
||||
await sys.ready()
|
||||
await personal.ready()
|
||||
const ctx = testCtx(sys, personal, {
|
||||
USER: 'guest',
|
||||
HOME: '/home/guest',
|
||||
UID: '65534',
|
||||
GID: '65534',
|
||||
PWD: '/home/guest'
|
||||
})
|
||||
const p = 18189
|
||||
const id = bareOsWwwHolesailConnectionId(p)
|
||||
const guestEnv = { ...ctx.env, BARE_OS_HOLESAIL_STATE: BARE_HOLESAIL_STATE_GUEST }
|
||||
const keepKey = 'hs://0000keepthiskey000000000000000000000000000000000000000000'
|
||||
await bareHolesailManagedWriteState(ctx, guestEnv, {
|
||||
version: 1,
|
||||
connections: {
|
||||
[id]: {
|
||||
server: true,
|
||||
port: 19999,
|
||||
host: '0.0.0.0',
|
||||
enabled: true,
|
||||
key: keepKey
|
||||
}
|
||||
}
|
||||
})
|
||||
await ensureBareOsWwwHolesailTunnel(ctx, ctx.env, p)
|
||||
const { state } = await bareHolesailManagedReadState(ctx, guestEnv)
|
||||
const row = /** @type {{ port?: number, host?: string, key?: string }} */ (
|
||||
state.connections[id]
|
||||
)
|
||||
t.is(row.port, p)
|
||||
t.is(row.host, '127.0.0.1')
|
||||
t.is(row.key, keepKey)
|
||||
await store.close()
|
||||
rmSync(dir, { recursive: true, force: true })
|
||||
})
|
||||
|
||||
test('BARE_OS_WWW_DEFAULT_INDEX is non-trivial HTML', (t) => {
|
||||
t.ok(BARE_OS_WWW_DEFAULT_INDEX.includes('<!DOCTYPE html>'))
|
||||
t.ok(BARE_OS_WWW_DEFAULT_INDEX.includes('Bare OS'))
|
||||
|
||||
Reference in New Issue
Block a user