Files
bare-operating-system/packages/bare-os-booter/test.irc-tls.js
T
2026-08-18 18:11:34 -04:00

51 lines
1.4 KiB
JavaScript

import test from 'brittle'
import {
bareOsIrcHostAllowed,
bareOsIrcPlaintextAllowed,
bareOsIrcIsLiberaHost,
BARE_OS_IRC_DEFAULT_ALLOW
} from './lib/services/bare-os-irc-policy.js'
test('stock allowlist includes Libera names', (t) => {
t.ok(BARE_OS_IRC_DEFAULT_ALLOW.indexOf('irc.libera.chat') >= 0)
t.ok(bareOsIrcIsLiberaHost('irc.eu.libera.chat'))
t.ok(bareOsIrcHostAllowed('irc.libera.chat', {}).ok)
t.ok(bareOsIrcHostAllowed('irc.us.libera.chat', {}).ok)
})
test('BARE_OS_IRC=0 disables', (t) => {
t.absent(bareOsIrcHostAllowed('irc.libera.chat', { BARE_OS_IRC: '0' }).ok)
})
test('denylist wins', (t) => {
const r = bareOsIrcHostAllowed('irc.libera.chat', {
BARE_OS_IRC_DENYLIST: 'irc.libera.chat'
})
t.absent(r.ok)
t.is(r.reason, 'denylist')
})
test('custom allowlist excludes default when set', (t) => {
const r = bareOsIrcHostAllowed('irc.libera.chat', {
BARE_OS_IRC_ALLOWLIST: 'irc.example.net'
})
t.absent(r.ok)
t.is(r.reason, 'not in allowlist')
t.ok(
bareOsIrcHostAllowed('irc.example.net', {
BARE_OS_IRC_ALLOWLIST: 'irc.example.net'
}).ok
)
})
test('Libera plaintext blocked unless insecurePlain', (t) => {
t.absent(bareOsIrcPlaintextAllowed('irc.libera.chat', { tls: false }).ok)
t.ok(
bareOsIrcPlaintextAllowed('irc.libera.chat', {
tls: false,
insecurePlain: true
}).ok
)
t.ok(bareOsIrcPlaintextAllowed('irc.example.net', { tls: false }).ok)
})