[#549] network/Address: Add TLS

There is no TLS protocol support in
`go-multiaddr` library, but there is
public function that can register any
protocol that can be implemented outside
the library. Also `TLSEnabled` function
for parsing TLS protocol from
`network.Address` was added.

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2021-05-21 15:16:07 +03:00 committed by Alex Vanin
parent 33bef46f31
commit f267fbc56a
4 changed files with 191 additions and 0 deletions

View file

@ -82,6 +82,66 @@ func TestAddress_HostAddrString(t *testing.T) {
})
}
func TestAddress_Encapsulate(t *testing.T) {
ma1, ma2 := "/dns4/neofs.bigcorp.com/tcp/8080", "/tls"
testcases := []struct {
ma1 multiaddr.Multiaddr
ma2 multiaddr.Multiaddr
want string
}{
{
buildMultiaddr(ma1, t),
buildMultiaddr(ma2, t),
ma1 + ma2,
},
{
buildMultiaddr(ma2, t),
buildMultiaddr(ma1, t),
ma2 + ma1,
},
}
for _, testcase := range testcases {
addr1 := &Address{testcase.ma1}
addr2 := &Address{testcase.ma2}
addr1.Encapsulate(addr2)
require.Equal(t, addr1.String(), testcase.want)
}
}
func TestAddress_Decapsulate(t *testing.T) {
ma1, ma2 := "/dns4/neofs.bigcorp.com/tcp/8080", "/tls"
testcases := []struct {
ma1 multiaddr.Multiaddr
ma2 multiaddr.Multiaddr
want string
}{
{
buildMultiaddr(ma1+ma2, t),
buildMultiaddr(ma2, t),
ma1,
},
{
buildMultiaddr(ma2+ma1, t),
buildMultiaddr(ma1, t),
ma2,
},
}
for _, testcase := range testcases {
addr1 := &Address{testcase.ma1}
addr2 := &Address{testcase.ma2}
addr1.Decapsulate(addr2)
require.Equal(t, addr1.String(), testcase.want)
}
}
func buildMultiaddr(s string, t *testing.T) multiaddr.Multiaddr {
ma, err := multiaddr.NewMultiaddr(s)
require.NoError(t, err)