|
|
- 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)
- addr := NewNetAddress("", tcpAddr)
-
- assert.Equal(t, "127.0.0.1:8080", addr.String())
-
- assert.NotPanics(t, func() {
- NewNetAddress("", &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 8000})
- }, "Calling NewNetAddress with UDPAddr should not panic in testing")
- }
-
- func TestNewNetAddressStringWithOptionalID(t *testing.T) {
- testCases := []struct {
- addr string
- expected string
- correct bool
- }{
- {"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},
- {"notahost", "", false},
- {"127.0.0.1:notapath", "", false},
- {"notahost:8080", "", false},
- {"8082", "", false},
- {"127.0.0:8080000", "", false},
-
- {"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},
-
- {"tcp://@127.0.0.1:8080", "", false},
- {"tcp://@", "", false},
- {"", "", false},
- {"@", "", false},
- {" @", "", false},
- {" @ ", "", false},
- }
-
- 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},
- }
-
- 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())
- }
- } else {
- assert.NotNil(t, err, tc.addr)
- }
- }
- }
-
- 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))
- }
-
- func TestNewNetAddressIPPort(t *testing.T) {
- addr := NewNetAddressIPPort(net.ParseIP("127.0.0.1"), 8080)
- assert.Equal(t, "127.0.0.1:8080", addr.String())
- }
-
- func TestNetAddressProperties(t *testing.T) {
- // TODO add more test cases
- testCases := []struct {
- 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)
-
- assert.Equal(t, tc.valid, addr.Valid())
- assert.Equal(t, tc.local, addr.Local())
- assert.Equal(t, tc.routable, addr.Routable())
- }
- }
-
- func TestNetAddressReachabilityTo(t *testing.T) {
- // TODO add more test cases
- testCases := []struct {
- 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)
-
- other, err := NewNetAddressStringWithOptionalID(tc.other)
- require.Nil(t, err)
-
- assert.Equal(t, tc.reachability, addr.ReachabilityTo(other))
- }
- }
|