github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/neorpc/result/peers_test.go (about)

     1  package result
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestGetPeers(t *testing.T) {
    11  	gp := NewGetPeers()
    12  	require.Equal(t, 0, len(gp.Unconnected))
    13  	require.Equal(t, 0, len(gp.Connected))
    14  	require.Equal(t, 0, len(gp.Bad))
    15  
    16  	gp.AddUnconnected([]string{"1.1.1.1:53", "8.8.8.8:53", "9.9.9.9:53"})
    17  	unsupportedFormat := "2001:DB0:0:123A:::30"
    18  	gp.AddConnected([]string{"192.168.0.1:10333", unsupportedFormat, "[2001:DB0:0:123A::]:30"})
    19  	gp.AddBad([]string{"127.0.0.1:20333", "127.0.0.1:65536"})
    20  
    21  	require.Equal(t, 3, len(gp.Unconnected))
    22  	require.Equal(t, 2, len(gp.Connected))
    23  	require.Equal(t, 2, len(gp.Bad))
    24  	require.Equal(t, "192.168.0.1", gp.Connected[0].Address)
    25  	require.Equal(t, uint16(10333), gp.Connected[0].Port)
    26  	require.Equal(t, uint16(30), gp.Connected[1].Port)
    27  	require.Equal(t, "127.0.0.1", gp.Bad[0].Address)
    28  	require.Equal(t, uint16(20333), gp.Bad[0].Port)
    29  	require.Equal(t, uint16(0), gp.Bad[1].Port)
    30  
    31  	gps := GetPeers{}
    32  	oldPeerFormat := `{"unconnected": [{"address": "20.109.188.128","port": "10333"},{"address": "27.188.182.47","port": "10333"}],"connected": [{"address": "54.227.43.72","port": "10333"},{"address": "157.90.177.38","port": "10333"}],"bad": [{"address": "5.226.142.226","port": "10333"}]}`
    33  	err := json.Unmarshal([]byte(oldPeerFormat), &gps)
    34  	require.NoError(t, err)
    35  	newPeerFormat := `{"unconnected": [{"address": "20.109.188.128","port": 10333},{"address": "27.188.182.47","port": 10333}],"connected": [{"address": "54.227.43.72","port": 10333},{"address": "157.90.177.38","port": 10333}],"bad": [{"address": "5.226.142.226","port": 10333},{"address": "54.208.117.178","port": 10333}]}`
    36  	err = json.Unmarshal([]byte(newPeerFormat), &gps)
    37  	require.NoError(t, err)
    38  	badIntFormat := `{"unconnected": [{"address": "20.109.188.128","port": 65536}],"connected": [],"bad": []}`
    39  	err = json.Unmarshal([]byte(badIntFormat), &gps)
    40  	require.Error(t, err)
    41  	badStringFormat := `{"unconnected": [{"address": "20.109.188.128","port": "badport"}],"connected": [],"bad": []}`
    42  	err = json.Unmarshal([]byte(badStringFormat), &gps)
    43  	require.Error(t, err)
    44  }