neoneo-go/pkg/services/oracle/network_test.go

50 lines
1.3 KiB
Go
Raw Normal View History

2020-09-25 14:39:11 +00:00
package oracle
import (
"errors"
2020-09-25 14:39:11 +00:00
"net"
"strings"
2020-09-25 14:39:11 +00:00
"testing"
"time"
2020-09-25 14:39:11 +00:00
"github.com/nspcc-dev/neo-go/pkg/config"
2020-09-25 14:39:11 +00:00
"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)
})
}
}