package oracle import ( "errors" "net" "strings" "testing" "time" "github.com/nspcc-dev/neo-go/pkg/config" "github.com/stretchr/testify/require" ) func TestIsReserved(t *testing.T) { require.True(t, isReserved(net.IPv4zero)) require.True(t, isReserved(net.IPv4(10, 0, 0, 1))) require.True(t, isReserved(net.IPv4(192, 168, 0, 1))) require.True(t, isReserved(net.IPv6interfacelocalallnodes)) require.True(t, isReserved(net.IPv6loopback)) require.False(t, isReserved(net.IPv4(8, 8, 8, 8))) } func TestDefaultClient_RestrictedRedirectErr(t *testing.T) { cfg := config.OracleConfiguration{ AllowPrivateHost: false, RequestTimeout: time.Second, } cl := getDefaultClient(cfg) testCases := []string{ "http://localhost:8080", "http://localhost", "https://localhost:443", "https://" + net.IPv4zero.String(), "https://" + net.IPv4(10, 0, 0, 1).String(), "https://" + net.IPv4(192, 168, 0, 1).String(), "https://[" + net.IPv6interfacelocalallnodes.String() + "]", "https://[" + net.IPv6loopback.String() + "]", } for _, c := range testCases { t.Run(c, func(t *testing.T) { _, err := cl.Get(c) //nolint:bodyclose // It errors out and it's a test. require.Error(t, err) require.True(t, errors.Is(err, ErrRestrictedRedirect), err) require.True(t, strings.Contains(err.Error(), "IP is not global unicast"), err) }) } }