Automerge backed Markdown editor for the Atmosphere
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import { test } from 'node:test'import assert from 'node:assert/strict'import { randomBytes, randomUUID } from 'node:crypto'import { execFileSync, spawnSync } from 'node:child_process'import pg from 'pg'
const docker = (...args) => execFileSync('docker', args, { encoding: 'utf8', timeout: 30_000 }).trim()test('Nix HappyView image boots read-only on real PostgreSQL and serves its static dashboard', { timeout: 90_000 }, async () => { const image = process.env.HAPPYVIEW_CONTAINER_IMAGE assert.ok(image) const id = randomUUID(), network = `hv-net-${id}`, db = `hv-db-${id}`, app = `hv-app-${id}` let client try { docker('network', 'create', network) docker('run', '-d', '--rm', '--name', db, '--network', network, '--network-alias', 'database', '-e', 'POSTGRES_PASSWORD=fixture-only', '-e', 'POSTGRES_DB=happyview', '-p', '127.0.0.1::5432', 'postgres:17-bookworm@sha256:639ab7ceb90e13123085b741fb31ef493fba25463002f6da665352e7b534b652') await ready(async () => spawnSync('docker', ['exec', db, 'pg_isready', '-U', 'postgres'], { stdio: 'ignore' }).status === 0) const port = docker('port', db, '5432/tcp').split(':').at(-1) await ready(async () => { const candidate = new pg.Client({ connectionString: `postgres://postgres:fixture-only@127.0.0.1:${port}/happyview`, connectionTimeoutMillis: 500 }) try { await candidate.connect(); client = candidate; return true } catch { await candidate.end().catch(() => {}); return false } }) docker('run', '-d', '--name', app, '--network', network, '--read-only', '--cap-drop=ALL', '--security-opt=no-new-privileges', '--tmpfs', '/tmp:rw,nosuid,nodev', '-p', '127.0.0.1::3000', '-e', 'DATABASE_URL=postgres://postgres:fixture-only@database:5432/happyview', '-e', 'PUBLIC_URL=https://spaces.example.test', '-e', `SESSION_SECRET=${randomBytes(48).toString('base64')}`, '-e', `TOKEN_ENCRYPTION_KEY=${randomBytes(32).toString('base64')}`, image) const webPort = docker('port', app, '3000/tcp').split(':').at(-1) await ready(async () => { if (!JSON.parse(docker('inspect', app))[0].State.Running) throw new Error('Provider exited during startup') return (await fetch(`http://127.0.0.1:${webPort}/health`)).ok }) const page = await fetch(`http://127.0.0.1:${webPort}/`) assert.equal(page.status, 200) assert.match(await page.text(), /HappyView/) const tables = await client.query("SELECT tablename FROM pg_tables WHERE schemaname='public'") assert.ok(tables.rows.some(row => row.tablename === 'happyview_api_clients')) console.log('HappyView PostgreSQL schema/table startup and compiled dashboard passed.') } catch (error) { const logs = spawnSync('docker', ['logs', app], { encoding: 'utf8' }) console.error(logs.stdout, logs.stderr) throw error } finally { await client?.end() spawnSync('docker', ['rm', '-f', app, db], { stdio: 'ignore' }) spawnSync('docker', ['network', 'rm', network], { stdio: 'ignore' }) }})async function ready(check) { const until = Date.now() + 30_000 while (Date.now() < until) { try { if (await check()) return } catch (error) { if (error.message.includes('Provider exited')) throw error } await new Promise(resolve => setTimeout(resolve, 100)) } throw new Error('Timed out waiting for real provider/database readiness')}