| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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)
- }
- }
|