923f84722a
Signed-off-by: Pavel Karpy <p.karpy@yadro.com>
81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
package network
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/multiformats/go-multiaddr"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestAddressFromString(t *testing.T) {
|
|
t.Run("valid addresses", func(t *testing.T) {
|
|
testcases := []struct {
|
|
inp string
|
|
exp multiaddr.Multiaddr
|
|
}{
|
|
{":8080", buildMultiaddr("/ip4/0.0.0.0/tcp/8080", t)},
|
|
{"example.com:7070", buildMultiaddr("/dns4/example.com/tcp/7070", t)},
|
|
{"213.44.87.1:32512", buildMultiaddr("/ip4/213.44.87.1/tcp/32512", t)},
|
|
{"[2004:eb1::1]:8080", buildMultiaddr("/ip6/2004:eb1::1/tcp/8080", t)},
|
|
{"grpc://example.com:7070", buildMultiaddr("/dns4/example.com/tcp/7070", t)},
|
|
{"grpcs://example.com:7070", buildMultiaddr("/dns4/example.com/tcp/7070/"+tlsProtocolName, t)},
|
|
}
|
|
|
|
var addr Address
|
|
|
|
for _, testcase := range testcases {
|
|
err := addr.FromString(testcase.inp)
|
|
require.NoError(t, err)
|
|
require.Equal(t, testcase.exp, addr.ma, testcase.inp)
|
|
}
|
|
})
|
|
t.Run("invalid addresses", func(t *testing.T) {
|
|
testCases := []string{
|
|
"wtf://example.com:123", // wrong scheme
|
|
"grpc://example.com", // missing port
|
|
}
|
|
|
|
var addr Address
|
|
for _, tc := range testCases {
|
|
require.Error(t, addr.FromString(tc))
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestAddress_HostAddrString(t *testing.T) {
|
|
t.Run("valid addresses", func(t *testing.T) {
|
|
testcases := []struct {
|
|
ma multiaddr.Multiaddr
|
|
exp string
|
|
}{
|
|
{buildMultiaddr("/dns4/frostfs.bigcorp.com/tcp/8080", t), "frostfs.bigcorp.com:8080"},
|
|
{buildMultiaddr("/ip4/172.16.14.1/tcp/8080", t), "172.16.14.1:8080"},
|
|
{buildMultiaddr("/ip4/192.168.0.1/tcp/8888/tls", t), "grpcs://192.168.0.1:8888"},
|
|
}
|
|
|
|
for _, testcase := range testcases {
|
|
addr := Address{testcase.ma}
|
|
|
|
got := addr.URIAddr()
|
|
|
|
require.Equal(t, testcase.exp, got)
|
|
}
|
|
})
|
|
|
|
t.Run("invalid addresses", func(t *testing.T) {
|
|
testcases := []multiaddr.Multiaddr{
|
|
buildMultiaddr("/tcp/8080", t),
|
|
}
|
|
|
|
for _, testcase := range testcases {
|
|
addr := Address{testcase}
|
|
require.Panics(t, func() { addr.URIAddr() })
|
|
}
|
|
})
|
|
}
|
|
|
|
func buildMultiaddr(s string, t *testing.T) multiaddr.Multiaddr {
|
|
ma, err := multiaddr.NewMultiaddr(s)
|
|
require.NoError(t, err)
|
|
return ma
|
|
}
|