mirror of
https://github.com/SagerNet/sing-box.git
synced 2026-04-14 04:38:28 +10:00
89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
package rule
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
C "github.com/sagernet/sing-box/constant"
|
|
"github.com/sagernet/sing-box/log"
|
|
"github.com/sagernet/sing-box/option"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewRuleRejectsNestedRuleAction(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
_, err := NewRule(context.Background(), log.NewNOPFactory().NewLogger("router"), option.Rule{
|
|
Type: C.RuleTypeLogical,
|
|
LogicalOptions: option.LogicalRule{
|
|
RawLogicalRule: option.RawLogicalRule{
|
|
Mode: C.LogicalTypeAnd,
|
|
Rules: []option.Rule{{
|
|
Type: C.RuleTypeDefault,
|
|
DefaultOptions: option.DefaultRule{
|
|
RuleAction: option.RuleAction{
|
|
Action: C.RuleActionTypeRoute,
|
|
RouteOptions: option.RouteActionOptions{
|
|
Outbound: "direct",
|
|
},
|
|
},
|
|
},
|
|
}},
|
|
},
|
|
},
|
|
}, false)
|
|
require.ErrorContains(t, err, option.RouteRuleActionNestedUnsupportedMessage)
|
|
}
|
|
|
|
func TestNewDNSRuleRejectsNestedRuleAction(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
_, err := NewDNSRule(context.Background(), log.NewNOPFactory().NewLogger("dns"), option.DNSRule{
|
|
Type: C.RuleTypeLogical,
|
|
LogicalOptions: option.LogicalDNSRule{
|
|
RawLogicalDNSRule: option.RawLogicalDNSRule{
|
|
Mode: C.LogicalTypeAnd,
|
|
Rules: []option.DNSRule{{
|
|
Type: C.RuleTypeDefault,
|
|
DefaultOptions: option.DefaultDNSRule{
|
|
DNSRuleAction: option.DNSRuleAction{
|
|
Action: C.RuleActionTypeRoute,
|
|
RouteOptions: option.DNSRouteActionOptions{
|
|
Server: "default",
|
|
},
|
|
},
|
|
},
|
|
}},
|
|
},
|
|
DNSRuleAction: option.DNSRuleAction{
|
|
Action: C.RuleActionTypeRoute,
|
|
RouteOptions: option.DNSRouteActionOptions{
|
|
Server: "default",
|
|
},
|
|
},
|
|
},
|
|
}, true, false)
|
|
require.ErrorContains(t, err, option.DNSRuleActionNestedUnsupportedMessage)
|
|
}
|
|
|
|
func TestNewDNSRuleRejectsReplyRejectMethod(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
_, err := NewDNSRule(context.Background(), log.NewNOPFactory().NewLogger("dns"), option.DNSRule{
|
|
Type: C.RuleTypeDefault,
|
|
DefaultOptions: option.DefaultDNSRule{
|
|
RawDefaultDNSRule: option.RawDefaultDNSRule{
|
|
Domain: []string{"example.com"},
|
|
},
|
|
DNSRuleAction: option.DNSRuleAction{
|
|
Action: C.RuleActionTypeReject,
|
|
RejectOptions: option.RejectActionOptions{
|
|
Method: C.RuleActionRejectMethodReply,
|
|
},
|
|
},
|
|
},
|
|
}, false, false)
|
|
require.ErrorContains(t, err, "reject method `reply` is not supported for DNS rules")
|
|
}
|