github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/services/oracle/network_test.go (about)

     1  package oracle
     2  
     3  import (
     4  	"net"
     5  	"strings"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/nspcc-dev/neo-go/pkg/config"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestIsReserved(t *testing.T) {
    14  	require.True(t, isReserved(net.IPv4zero))
    15  	require.True(t, isReserved(net.IPv4(10, 0, 0, 1)))
    16  	require.True(t, isReserved(net.IPv4(192, 168, 0, 1)))
    17  	require.True(t, isReserved(net.IPv6interfacelocalallnodes))
    18  	require.True(t, isReserved(net.IPv6loopback))
    19  
    20  	require.False(t, isReserved(net.IPv4(8, 8, 8, 8)))
    21  }
    22  
    23  func TestDefaultClient_RestrictedRedirectErr(t *testing.T) {
    24  	cfg := config.OracleConfiguration{
    25  		AllowPrivateHost: false,
    26  		RequestTimeout:   time.Second,
    27  	}
    28  	cl := getDefaultClient(cfg)
    29  
    30  	testCases := []string{
    31  		"http://localhost:8080",
    32  		"http://localhost",
    33  		"https://localhost:443",
    34  		"https://" + net.IPv4zero.String(),
    35  		"https://" + net.IPv4(10, 0, 0, 1).String(),
    36  		"https://" + net.IPv4(192, 168, 0, 1).String(),
    37  		"https://[" + net.IPv6interfacelocalallnodes.String() + "]",
    38  		"https://[" + net.IPv6loopback.String() + "]",
    39  	}
    40  	for _, c := range testCases {
    41  		t.Run(c, func(t *testing.T) {
    42  			_, err := cl.Get(c) //nolint:bodyclose // It errors out and it's a test.
    43  			require.ErrorIs(t, err, ErrRestrictedRedirect)
    44  			require.True(t, strings.Contains(err.Error(), "IP is not global unicast"), err)
    45  		})
    46  	}
    47  }