This repository has been archived on 2023-03-15. You can view files and clone it, but cannot push or open issues or pull requests.
infrastructure/docker/netiquette/test/iptables.mjs
2019-12-04 18:04:30 +01:00

28 lines
1.1 KiB
JavaScript

'use strict'
import chai from 'chai'
import iptables from '../src/injector/iptables.mjs'
const expect = chai.expect
export default [
(async () => {
const effective_actions = []
const expected_actions = [
'iptables -A INPUT -p tcp --dport 56 -j ACCEPT',
'iptables -A INPUT -p tcp --dport 53 -j ACCEPT',
'iptables -A INPUT -p udp --match multiport --dports 25630:25999 -j ACCEPT',
'iptables -D INPUT -p tcp --dport 54 -j ACCEPT'
]
const mockLog = () => {}
const mockReadFile = (file, opt) => '-A INPUT -p tcp --dport 53 -j ACCEPT'
const mockExecCommand = (cmd, opts) => {
if (cmd.match(/^iptables -S/g)) return { stdout: '-A INPUT -p tcp --dport 54 -j ACCEPT' }
else effective_actions.push(cmd)
return { stdout: '' } }
const fw = await iptables('static', mockReadFile, mockExecCommand, mockLog)
await fw(['public_port=56/tcp', 'public_port=25630-25999/udp', 'public_port=13', 'traefik.entrypoints=Host:im.deuxfleurs.fr;PathPrefix:/_matrix'])
expect(effective_actions).to.have.members(expected_actions)
})
]