OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay / packages / blind-daemon / test / bootstrap-config.test.js

69 lines · javascript ref:
import b4a from 'b4a'
import test from 'brittle'
import {
  loadDaemonBootstrapConfig,
  requiredEndpointIds,
  requiredTopologyHash
} from '../bootstrap-config.js'

function validEnvironment (overrides = {}) {
  return {
    HIVERELAY_BLIND_UNARY_SOCKET: '/private/tmp/hiverelay-blind/unary.sock',
    HIVERELAY_BLIND_STREAM_SOCKET: '/private/tmp/hiverelay-blind/stream.sock',
    HIVERELAY_BLIND_LAUNCH_TOPOLOGY_HASH: 'ab'.repeat(32),
    HIVERELAY_BLIND_ENDPOINT_IDS: '1,7,255',
    HIVERELAY_BLIND_EDGE_UID: '998',
    HIVERELAY_BLIND_DAEMON_UID: '999',
    HIVERELAY_BLIND_DAEMON_GID: '997',
    HIVERELAY_BLIND_SHARED_GID: '997',
    ...overrides
  }
}

const identity = { getuid: () => 999, getgid: () => 997 }

test('daemon bootstrap config binds every signed topology input exactly', t => {
  const config = loadDaemonBootstrapConfig(validEnvironment(), identity)
  t.is(config.unarySocketPath, '/private/tmp/hiverelay-blind/unary.sock')
  t.is(config.streamSocketPath, '/private/tmp/hiverelay-blind/stream.sock')
  t.is(config.expectedPeerUid, 998)
  t.is(config.expectedPeerGid, 997)
  t.is(config.socketGroupGid, 997)
  t.alike(config.endpointIds, [1, 7, 255])
  t.alike(config.launchTopologyHash, b4a.alloc(32, 0xab))
  t.is(Object.isFrozen(config.endpointIds), true)
})

test('daemon endpoint set encoding is canonical, ordered and duplicate-free', async t => {
  for (const value of ['', '0', '01', '256', '2,1', '1,1', '1, 2', '1,2,', ',1', '1'.repeat(1020)]) {
    await t.exception(() => requiredEndpointIds(validEnvironment({ HIVERELAY_BLIND_ENDPOINT_IDS: value })), 'rejects malformed endpoint set')
  }
  t.alike(requiredEndpointIds(validEnvironment({ HIVERELAY_BLIND_ENDPOINT_IDS: '1,2,255' })), [1, 2, 255])
})

test('daemon bootstrap rejects incomplete, aliased and wrong-identity topology', async t => {
  const cases = [
    { HIVERELAY_BLIND_UNARY_SOCKET: undefined },
    { HIVERELAY_BLIND_STREAM_SOCKET: 'relative.sock' },
    { HIVERELAY_BLIND_STREAM_SOCKET: '/private/tmp/hiverelay-blind/unary.sock' },
    { HIVERELAY_BLIND_LAUNCH_TOPOLOGY_HASH: '00' },
    { HIVERELAY_BLIND_ENDPOINT_IDS: undefined },
    { HIVERELAY_BLIND_EDGE_UID: '999' },
    { HIVERELAY_BLIND_DAEMON_UID: '0999' },
    { HIVERELAY_BLIND_DAEMON_GID: '996' }
  ]
  for (const overrides of cases) await t.exception(() => loadDaemonBootstrapConfig(validEnvironment(overrides), identity))
  await t.exception(() => loadDaemonBootstrapConfig(validEnvironment(), { getuid: () => 1000, getgid: () => 997 }))
  await t.exception(() => loadDaemonBootstrapConfig(validEnvironment(), { getuid: () => 999, getgid: () => 996 }))
  await t.exception(() => loadDaemonBootstrapConfig(validEnvironment(), {}))
})

test('daemon topology hash accepts exact hex bytes and rejects shape drift', async t => {
  t.alike(requiredTopologyHash(validEnvironment({
    HIVERELAY_BLIND_LAUNCH_TOPOLOGY_HASH: 'CD'.repeat(32)
  })), b4a.alloc(32, 0xcd))
  for (const value of ['', '0'.repeat(63), '0'.repeat(65), 'zz'.repeat(32), ` ${'00'.repeat(32)}`]) {
    await t.exception(() => requiredTopologyHash(validEnvironment({ HIVERELAY_BLIND_LAUNCH_TOPOLOGY_HASH: value })))
  }
})