mirror of
https://github.com/SagerNet/sing-box.git
synced 2026-04-13 02:27:19 +10:00
69 lines
1.6 KiB
Go
69 lines
1.6 KiB
Go
package option
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/sagernet/sing/common/json"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestRuleRejectsNestedDefaultRuleAction(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var rule Rule
|
|
err := json.UnmarshalContext(context.Background(), []byte(`{
|
|
"type": "logical",
|
|
"mode": "and",
|
|
"rules": [
|
|
{"domain": "example.com", "outbound": "direct"}
|
|
]
|
|
}`), &rule)
|
|
require.ErrorContains(t, err, RouteRuleActionNestedUnsupportedMessage)
|
|
}
|
|
|
|
func TestRuleLeavesUnknownNestedKeysToNormalValidation(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var rule Rule
|
|
err := json.UnmarshalContext(context.Background(), []byte(`{
|
|
"type": "logical",
|
|
"mode": "and",
|
|
"rules": [
|
|
{"domain": "example.com", "foo": "bar"}
|
|
]
|
|
}`), &rule)
|
|
require.ErrorContains(t, err, "unknown field")
|
|
require.NotContains(t, err.Error(), RouteRuleActionNestedUnsupportedMessage)
|
|
}
|
|
|
|
func TestDNSRuleRejectsNestedDefaultRuleAction(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var rule DNSRule
|
|
err := json.UnmarshalContext(context.Background(), []byte(`{
|
|
"type": "logical",
|
|
"mode": "and",
|
|
"rules": [
|
|
{"domain": "example.com", "server": "default"}
|
|
]
|
|
}`), &rule)
|
|
require.ErrorContains(t, err, DNSRuleActionNestedUnsupportedMessage)
|
|
}
|
|
|
|
func TestDNSRuleLeavesUnknownNestedKeysToNormalValidation(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
var rule DNSRule
|
|
err := json.UnmarshalContext(context.Background(), []byte(`{
|
|
"type": "logical",
|
|
"mode": "and",
|
|
"rules": [
|
|
{"domain": "example.com", "foo": "bar"}
|
|
]
|
|
}`), &rule)
|
|
require.ErrorContains(t, err, "unknown field")
|
|
require.NotContains(t, err.Error(), DNSRuleActionNestedUnsupportedMessage)
|
|
}
|