From 519e1e4f4ac506edb961a95f038ced5bf4d345f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Kapka?= Date: Mon, 17 May 2021 20:58:13 +0200 Subject: [PATCH] Decode peer ID properly when fetching peer (#8883) # Conflicts: # beacon-chain/rpc/nodev1/node_test.go Co-authored-by: Raul Jordan --- beacon-chain/rpc/nodev1/node.go | 4 ++-- beacon-chain/rpc/nodev1/node_test.go | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/beacon-chain/rpc/nodev1/node.go b/beacon-chain/rpc/nodev1/node.go index 4835479d724a..71b0aae1e446 100644 --- a/beacon-chain/rpc/nodev1/node.go +++ b/beacon-chain/rpc/nodev1/node.go @@ -78,9 +78,9 @@ func (ns *Server) GetPeer(ctx context.Context, req *ethpb.PeerRequest) (*ethpb.P defer span.End() peerStatus := ns.PeersFetcher.Peers() - id, err := peer.IDFromString(req.PeerId) + id, err := peer.Decode(req.PeerId) if err != nil { - return nil, status.Error(codes.InvalidArgument, "Invalid peer ID: "+req.PeerId) + return nil, status.Errorf(codes.Internal, "Could not decode peer ID: %v", err) } enr, err := peerStatus.ENR(id) if err != nil { diff --git a/beacon-chain/rpc/nodev1/node_test.go b/beacon-chain/rpc/nodev1/node_test.go index b969f455f38a..fc2392d73b64 100644 --- a/beacon-chain/rpc/nodev1/node_test.go +++ b/beacon-chain/rpc/nodev1/node_test.go @@ -172,10 +172,10 @@ func TestSyncStatus(t *testing.T) { } func TestGetPeer(t *testing.T) { + const rawId = "16Uiu2HAkvyYtoQXZNTsthjgLHjEnv7kvwzEmjvsJjWXpbhtqpSUN" ctx := context.Background() - decodedId, err := peer.Decode("16Uiu2HAkvyYtoQXZNTsthjgLHjEnv7kvwzEmjvsJjWXpbhtqpSUN") + decodedId, err := peer.Decode(rawId) require.NoError(t, err) - peerId := string(decodedId) enrRecord := &enr.Record{} err = enrRecord.SetSig(dummyIdentity{1}, []byte{42}) require.NoError(t, err) @@ -190,9 +190,9 @@ func TestGetPeer(t *testing.T) { peerFetcher.Peers().Add(enrRecord, decodedId, p2pMultiAddr, network.DirInbound) t.Run("OK", func(t *testing.T) { - resp, err := s.GetPeer(ctx, ðpb.PeerRequest{PeerId: peerId}) + resp, err := s.GetPeer(ctx, ðpb.PeerRequest{PeerId: rawId}) require.NoError(t, err) - assert.Equal(t, peerId, resp.Data.PeerId) + assert.Equal(t, rawId, resp.Data.PeerId) assert.Equal(t, p2pAddr, resp.Data.Address) assert.Equal(t, "enr:yoABgmlwhAcHBwc=", resp.Data.Enr) assert.Equal(t, ethpb.ConnectionState_DISCONNECTED, resp.Data.State) @@ -201,11 +201,11 @@ func TestGetPeer(t *testing.T) { t.Run("Invalid ID", func(t *testing.T) { _, err = s.GetPeer(ctx, ðpb.PeerRequest{PeerId: "foo"}) - assert.ErrorContains(t, "Invalid peer ID: foo", err) + assert.ErrorContains(t, "Could not decode peer ID", err) }) t.Run("Peer not found", func(t *testing.T) { - generatedId := string(libp2ptest.GeneratePeerIDs(1)[0]) + generatedId := "16Uiu2HAmQqFdEcHbSmQTQuLoAhnMUrgoWoraKK4cUJT6FuuqHqTU" _, err = s.GetPeer(ctx, ðpb.PeerRequest{PeerId: generatedId}) assert.ErrorContains(t, "Peer not found", err) })