Files
smartnftables/test/test.rulebuilder-table.ts
2026-03-26 10:32:05 +00:00

46 lines
1.5 KiB
TypeScript

import { tap, expect } from '@git.zone/tstest/tapbundle';
import {
buildTableSetup,
buildFilterChains,
buildTableCleanup,
} from '../ts/nft.rulebuilder.table.js';
tap.test('should build table setup commands', async () => {
const commands = buildTableSetup('mytest');
expect(commands.length).toEqual(3);
expect(commands[0]).toInclude('add table ip mytest');
expect(commands[1]).toInclude('prerouting');
expect(commands[1]).toInclude('nat hook prerouting');
expect(commands[2]).toInclude('postrouting');
expect(commands[2]).toInclude('nat hook postrouting');
});
tap.test('should build table setup with custom family', async () => {
const commands = buildTableSetup('mytest', 'inet');
for (const cmd of commands) {
expect(cmd).toInclude('inet mytest');
}
});
tap.test('should build filter chains', async () => {
const commands = buildFilterChains('mytest');
expect(commands.length).toEqual(3);
expect(commands[0]).toInclude('input');
expect(commands[0]).toInclude('filter hook input');
expect(commands[1]).toInclude('forward');
expect(commands[2]).toInclude('output');
});
tap.test('should build table cleanup command', async () => {
const commands = buildTableCleanup('mytest');
expect(commands.length).toEqual(1);
expect(commands[0]).toInclude('delete table ip mytest');
});
tap.test('should build table cleanup with custom family', async () => {
const commands = buildTableCleanup('mytest', 'ip6');
expect(commands[0]).toInclude('delete table ip6 mytest');
});
export default tap.start();