ppanel-server/pkg/rules/rules_test.go
2025-09-27 10:17:16 +08:00

53 lines
1.0 KiB
Go

package rules
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
var text = `
DOMAIN,example.com
DOMAIN-SUFFIX,google.com,DIRECT
DOMAIN-KEYWORD,amazon,REJECT
IP-CIDR,192.168.0.0/16
`
func TestNewRule(t *testing.T) {
var rs []string
// parse validate rules
ruleArr := strings.Split(text, "\n")
if len(ruleArr) == 0 {
t.Error("rules is empty")
}
ruleArr = trimArr(ruleArr)
for _, s := range ruleArr {
r := NewRule(s, "Test")
if r == nil {
t.Errorf("[CreateRuleGroup] rule %s is nil, len: %d", s, len(s))
continue
}
if err := r.Validate(); err != nil {
t.Errorf("[CreateRuleGroup] rule %s is invalid: %v", s, err)
continue
}
rs = append(rs, r.String())
}
expected := []string{
"DOMAIN,example.com,Test",
"DOMAIN-SUFFIX,google.com,DIRECT",
"DOMAIN-KEYWORD,amazon,REJECT",
"IP-CIDR,192.168.0.0/16,Test,no-resolve",
}
for i, r := range rs {
if r != expected[i] {
t.Errorf("expected %s, got %s", expected[i], r)
}
}
// Check if the rules are sorted
assert.Equal(t, len(rs), len(expected))
}