mirror of
https://github.com/SagerNet/sing-box.git
synced 2026-04-11 17:47:20 +10:00
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package option
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
C "github.com/sagernet/sing-box/constant"
|
|
"github.com/sagernet/sing/common/json"
|
|
"github.com/sagernet/sing/service"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type stubDNSTransportOptionsRegistry struct{}
|
|
|
|
func (stubDNSTransportOptionsRegistry) CreateOptions(transportType string) (any, bool) {
|
|
switch transportType {
|
|
case C.DNSTypeUDP:
|
|
return new(RemoteDNSServerOptions), true
|
|
case C.DNSTypeFakeIP:
|
|
return new(FakeIPDNSServerOptions), true
|
|
default:
|
|
return nil, false
|
|
}
|
|
}
|
|
|
|
func TestDNSOptionsRejectsLegacyFakeIPOptions(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
ctx := service.ContextWith[DNSTransportOptionsRegistry](context.Background(), stubDNSTransportOptionsRegistry{})
|
|
var options DNSOptions
|
|
err := json.UnmarshalContext(ctx, []byte(`{
|
|
"fakeip": {
|
|
"enabled": true,
|
|
"inet4_range": "198.18.0.0/15"
|
|
}
|
|
}`), &options)
|
|
require.EqualError(t, err, legacyDNSFakeIPRemovedMessage)
|
|
}
|
|
|
|
func TestDNSServerOptionsRejectsLegacyFormats(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
ctx := service.ContextWith[DNSTransportOptionsRegistry](context.Background(), stubDNSTransportOptionsRegistry{})
|
|
testCases := []string{
|
|
`{"address":"1.1.1.1"}`,
|
|
`{"type":"legacy","address":"1.1.1.1"}`,
|
|
}
|
|
for _, content := range testCases {
|
|
var options DNSServerOptions
|
|
err := json.UnmarshalContext(ctx, []byte(content), &options)
|
|
require.EqualError(t, err, legacyDNSServerRemovedMessage)
|
|
}
|
|
}
|