iptables_test.go 825 B

123456789101112131415161718192021222324252627282930313233343536
  1. package firewall
  2. import (
  3. "strings"
  4. "testing"
  5. )
  6. func TestBuildNATRuleLines_InterfaceList(t *testing.T) {
  7. rule := NATRule{
  8. ID: "nat-test-1",
  9. Order: 1,
  10. Chain: "srcnat",
  11. Action: "masquerade",
  12. OutInterface: "wan0",
  13. Disabled: false,
  14. }
  15. resolved := resolveRoles([]byte(`{"interfaces":{"wan0":{"role":"WAN"},"lan0":{"role":"LAN"}}}`), "WAN")
  16. if len(resolved) != 1 || resolved[0] != "wan0" {
  17. t.Fatal(resolved)
  18. }
  19. lines := buildNATRuleLines(rule)
  20. if len(lines) == 0 {
  21. t.Fatalf("expected non-empty lines for WAN interface list, got 0")
  22. }
  23. for _, l := range lines {
  24. if !strings.Contains(l, "-j MASQUERADE") {
  25. t.Errorf("line missing -j MASQUERADE: %s", l)
  26. }
  27. if !strings.Contains(l, "-o ") {
  28. t.Errorf("expected -o flag in expanded NAT rule, got: %s", l)
  29. }
  30. }
  31. }