tendermint/p2p/netaddress_test.go

149 lines
4.0 KiB
Go
Raw Normal View History

2017-04-14 05:37:07 -07:00
package p2p
import (
"net"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestNewNetAddress(t *testing.T) {
tcpAddr, err := net.ResolveTCPAddr("tcp", "127.0.0.1:8080")
require.Nil(t, err)
2018-01-01 20:08:20 -08:00
addr := NewNetAddress("", tcpAddr)
2017-04-14 05:37:07 -07:00
assert.Equal(t, "127.0.0.1:8080", addr.String())
2017-04-14 05:37:07 -07:00
assert.NotPanics(t, func() {
2018-01-01 20:08:20 -08:00
NewNetAddress("", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8000})
2017-04-14 05:37:07 -07:00
}, "Calling NewNetAddress with UDPAddr should not panic in testing")
}
func TestNewNetAddressStringWithOptionalID(t *testing.T) {
2017-12-15 11:36:08 -08:00
testCases := []struct {
addr string
expected string
correct bool
2017-04-14 05:37:07 -07:00
}{
2017-12-15 11:36:08 -08:00
{"127.0.0.1:8080", "127.0.0.1:8080", true},
{"tcp://127.0.0.1:8080", "127.0.0.1:8080", true},
{"udp://127.0.0.1:8080", "127.0.0.1:8080", true},
{"udp//127.0.0.1:8080", "", false},
// {"127.0.0:8080", false},
2017-12-15 11:36:08 -08:00
{"notahost", "", false},
{"127.0.0.1:notapath", "", false},
{"notahost:8080", "", false},
{"8082", "", false},
{"127.0.0:8080000", "", false},
2018-01-01 20:08:20 -08:00
{"deadbeef@127.0.0.1:8080", "", false},
{"this-isnot-hex@127.0.0.1:8080", "", false},
{"xxxxbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", "", false},
{"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", true},
{"tcp://deadbeef@127.0.0.1:8080", "", false},
{"tcp://this-isnot-hex@127.0.0.1:8080", "", false},
{"tcp://xxxxbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", "", false},
{"tcp://deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", true},
2018-01-13 13:06:31 -08:00
{"tcp://@127.0.0.1:8080", "", false},
{"tcp://@", "", false},
{"", "", false},
{"@", "", false},
{" @", "", false},
{" @ ", "", false},
2017-04-14 05:37:07 -07:00
}
for _, tc := range testCases {
addr, err := NewNetAddressStringWithOptionalID(tc.addr)
if tc.correct {
if assert.Nil(t, err, tc.addr) {
assert.Equal(t, tc.expected, addr.String())
}
} else {
assert.NotNil(t, err, tc.addr)
}
}
}
func TestNewNetAddressString(t *testing.T) {
testCases := []struct {
addr string
expected string
correct bool
}{
{"127.0.0.1:8080", "127.0.0.1:8080", false},
{"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", "deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080", true},
}
2017-12-15 11:36:08 -08:00
for _, tc := range testCases {
addr, err := NewNetAddressString(tc.addr)
if tc.correct {
if assert.Nil(t, err, tc.addr) {
assert.Equal(t, tc.expected, addr.String())
}
2017-04-14 05:37:07 -07:00
} else {
2017-12-15 11:36:08 -08:00
assert.NotNil(t, err, tc.addr)
2017-04-14 05:37:07 -07:00
}
}
}
func TestNewNetAddressStrings(t *testing.T) {
addrs, errs := NewNetAddressStrings([]string{
"127.0.0.1:8080",
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeef@127.0.0.1:8080",
"deadbeefdeadbeefdeadbeefdeadbeefdeadbeed@127.0.0.2:8080"})
assert.Len(t, errs, 1)
assert.Equal(t, 2, len(addrs))
2017-04-14 05:37:07 -07:00
}
func TestNewNetAddressIPPort(t *testing.T) {
addr := NewNetAddressIPPort(net.ParseIP("127.0.0.1"), 8080)
assert.Equal(t, "127.0.0.1:8080", addr.String())
2017-04-14 05:37:07 -07:00
}
func TestNetAddressProperties(t *testing.T) {
// TODO add more test cases
testCases := []struct {
2017-04-14 05:37:07 -07:00
addr string
valid bool
local bool
routable bool
}{
{"127.0.0.1:8080", true, true, false},
{"ya.ru:80", true, false, true},
}
for _, tc := range testCases {
addr, err := NewNetAddressStringWithOptionalID(tc.addr)
require.Nil(t, err)
2017-04-14 05:37:07 -07:00
assert.Equal(t, tc.valid, addr.Valid())
assert.Equal(t, tc.local, addr.Local())
assert.Equal(t, tc.routable, addr.Routable())
2017-04-14 05:37:07 -07:00
}
}
func TestNetAddressReachabilityTo(t *testing.T) {
// TODO add more test cases
testCases := []struct {
2017-04-14 05:37:07 -07:00
addr string
other string
reachability int
}{
{"127.0.0.1:8080", "127.0.0.1:8081", 0},
{"ya.ru:80", "127.0.0.1:8080", 1},
}
for _, tc := range testCases {
addr, err := NewNetAddressStringWithOptionalID(tc.addr)
require.Nil(t, err)
2017-04-14 05:37:07 -07:00
other, err := NewNetAddressStringWithOptionalID(tc.other)
require.Nil(t, err)
2017-04-14 05:37:07 -07:00
assert.Equal(t, tc.reachability, addr.ReachabilityTo(other))
2017-04-14 05:37:07 -07:00
}
}