51 lines
1.4 KiB
JavaScript
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)
|
|
})
|