package firewall import ( "strings" "testing" ) func TestBuildNATRuleLines_InterfaceList(t *testing.T) { rule := NATRule{ ID: "nat-test-1", Order: 1, Chain: "srcnat", Action: "masquerade", OutInterface: "wan0", Disabled: false, } resolved := resolveRoles([]byte(`{"interfaces":{"wan0":{"role":"WAN"},"lan0":{"role":"LAN"}}}`), "WAN") if len(resolved) != 1 || resolved[0] != "wan0" { t.Fatal(resolved) } lines := buildNATRuleLines(rule) if len(lines) == 0 { t.Fatalf("expected non-empty lines for WAN interface list, got 0") } for _, l := range lines { if !strings.Contains(l, "-j MASQUERADE") { t.Errorf("line missing -j MASQUERADE: %s", l) } if !strings.Contains(l, "-o ") { t.Errorf("expected -o flag in expanded NAT rule, got: %s", l) } } }