Files
bare-operating-system/packages/bare-os-booter/test.socket-scm-rights.js
T
Raven Scott 39dbf0f1be CI/docs: placeholder-baseline --check, seeder↔kernel sync script and docs,
holepunch lockfile drift Markdown dashboard + doc links
- disk.os / ctx: replication_operator_sketch schema 5 + corestore stats;
  protomux extensions proc versioning; HRPC allowlist_sketch schema 3 +
  versioned stock route table; swarm_health proc + runtime caps paths
- Session: BARE_OS_HOSTNAME_SET + ctx.bareOsSetSessionHostname, hostname man,
  security_posture; export -p in shell
- kernel.ext.d: optional provides[] version conflict detection (strict boot);
  resolver parity + tests; BARE_OS_INIT_DEFER_KERNEL_EXT_GRAPH documented
- VFS/policy: mirror/aux read tests, GUEST_BARE_READ_ALL edge negative test;
  adaptive warm-cache window env documented; microbench note
- POSIX: syscalls.json schema 10, posix_fadvise no-op, getconf + conformance
  matrix sync; posix-issue7-traceability index; handbook/profile/matrix updates
- Seeder: pear.multisig hint tests; SCM_RIGHTS unit coverage extended
- Regenerated kernel bundle, seeder kernel mirror, posix dashboard, coreutils
  build/man; booter CHANGELOG maintenance row updated
Full npm test / pretest green.
2026-04-05 14:45:01 -04:00

114 lines
3.1 KiB
JavaScript

/**
* Unit tests for BARE_OS_POSIX_SOCKET_SCM_RIGHTS parsing helpers (no live TCP/UDP bridge).
*/
import test from 'brittle'
import {
bareOsEnsureSocketSlotAliasKeys,
bareOsParseSendmsgScmRights,
bareOsScmRightsMaxFds,
wantPosixSocketScmRights
} from './lib/bare-os-socket-scm-rights.js'
test('wantPosixSocketScmRights', (t) => {
t.absent(wantPosixSocketScmRights({}))
t.ok(wantPosixSocketScmRights({ BARE_OS_POSIX_SOCKET_SCM_RIGHTS: '1' }))
t.ok(wantPosixSocketScmRights({ BARE_OS_POSIX_SOCKET_SCM_RIGHTS: 'true' }))
t.absent(wantPosixSocketScmRights({ BARE_OS_POSIX_SOCKET_SCM_RIGHTS: '0' }))
})
test('bareOsScmRightsMaxFds default and cap', (t) => {
t.is(bareOsScmRightsMaxFds({}), 4)
t.is(bareOsScmRightsMaxFds({ BARE_OS_POSIX_SOCKET_SCM_RIGHTS_MAX_FDS: '2' }), 2)
t.is(bareOsScmRightsMaxFds({ BARE_OS_POSIX_SOCKET_SCM_RIGHTS_MAX_FDS: '99' }), 16)
})
test('bareOsParseSendmsgScmRights: empty / no ancillary', (t) => {
const r = bareOsParseSendmsgScmRights({}, true, 4)
t.ok(r.ok)
t.alike(r.fds, [])
const r2 = bareOsParseSendmsgScmRights({ buf: new Uint8Array(1) }, true, 4)
t.ok(r2.ok)
})
test('bareOsParseSendmsgScmRights: rejects binary control when scm on', (t) => {
const r = bareOsParseSendmsgScmRights(
{ control: new Uint8Array([1]) },
true,
4
)
t.absent(r.ok)
t.is(r.reject, 'control')
})
test('bareOsParseSendmsgScmRights: rejects controllen when scm on', (t) => {
const r = bareOsParseSendmsgScmRights({ controllen: 3 }, true, 4)
t.absent(r.ok)
t.is(r.reject, 'controllen')
})
test('bareOsParseSendmsgScmRights: valid cmsgs fds', (t) => {
const r = bareOsParseSendmsgScmRights(
{ cmsgs: [{ fds: [3, 4] }] },
true,
4
)
t.ok(r.ok)
t.alike(r.fds, [3, 4])
})
test('bareOsParseSendmsgScmRights: msgHdr.cmsgs merged', (t) => {
const r = bareOsParseSendmsgScmRights(
{ msgHdr: { cmsgs: [{ fds: [5] }] } },
true,
4
)
t.ok(r.ok)
t.alike(r.fds, [5])
})
test('bareOsParseSendmsgScmRights: cap exceeded', (t) => {
const r = bareOsParseSendmsgScmRights(
{ cmsgs: [{ fds: [1, 2, 3, 4, 5] }] },
true,
4
)
t.absent(r.ok)
t.is(r.reject, 'cmsgs_cap')
})
test('bareOsParseSendmsgScmRights: cmsgs when scm off', (t) => {
const r = bareOsParseSendmsgScmRights(
{ cmsgs: [{ fds: [1] }] },
false,
4
)
t.absent(r.ok)
t.is(r.reject, 'cmsgs')
})
test('bareOsParseSendmsgScmRights: malformed cmsgs entry', (t) => {
const r = bareOsParseSendmsgScmRights({ cmsgs: [{ fds: 'nope' }] }, true, 4)
t.absent(r.ok)
t.is(r.reject, 'cmsgs')
})
test('bareOsEnsureSocketSlotAliasKeys', (t) => {
const slot = {}
bareOsEnsureSocketSlotAliasKeys(slot, '7')
t.ok(slot.aliasKeys instanceof Set)
t.ok(slot.aliasKeys.has('7'))
bareOsEnsureSocketSlotAliasKeys(slot, '8')
t.ok(slot.aliasKeys.has('8'))
})
test('SCM_RIGHTS: send-side cmsgs parse ok when gate on (logical dup applied in booter sendmsg)', (t) => {
t.ok(wantPosixSocketScmRights({ BARE_OS_POSIX_SOCKET_SCM_RIGHTS: '1' }))
const prep = bareOsParseSendmsgScmRights(
{ cmsgs: [{ fds: [11] }] },
true,
bareOsScmRightsMaxFds({})
)
t.ok(prep.ok)
t.alike(prep.fds, [11])
})