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 }