add marshal unittest
package peerstore
import (
+ "encoding/json"
"testing"
"github.com/libp2p/go-libp2p-peer"
@@ -57,6 +58,88 @@ func TestPeerInfoMarshal(t *testing.T) {
}
}
+func TestPeerInfoMarshalWithPointer(t *testing.T) {
+ a := mustAddr(t, "/ip4/1.2.3.4/tcp/4536")
+ b := mustAddr(t, "/ip4/1.2.3.8/udp/7777")
+ id, err := peer.IDB58Decode("QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ pi := PeerInfo{
+ ID: id,
+ Addrs: []ma.Multiaddr{a, b},
+ }
+
+ data, err := json.Marshal(&pi)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ pi2 := new(PeerInfo)
+ if err := json.Unmarshal(data, pi2); err != nil {
+ t.Fatal(err)
+ }
+
+ if pi2.ID != pi.ID {
+ t.Fatal("ids didnt match after marshal")
+ }
+
+ if !pi.Addrs[0].Equal(pi2.Addrs[0]) {
+ t.Fatal("wrong addrs")
+ }
+
+ if !pi.Addrs[1].Equal(pi2.Addrs[1]) {
+ t.Fatal("wrong addrs")
+ }
+
+ lgbl := pi2.Loggable()
+ if lgbl["peerID"] != id.Pretty() {
+ t.Fatal("loggables gave wrong peerID output")
+ }
+}
+
+func TestPeerInfoMarshalWithValue(t *testing.T) {
+ a := mustAddr(t, "/ip4/1.2.3.4/tcp/4536")
+ b := mustAddr(t, "/ip4/1.2.3.8/udp/7777")
+ id, err := peer.IDB58Decode("QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ")
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ pi := PeerInfo{
+ ID: id,
+ Addrs: []ma.Multiaddr{a, b},
+ }
+
+ data, err := json.Marshal(pi)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ pi2 := new(PeerInfo)
+ if err := json.Unmarshal(data, pi2); err != nil {
+ t.Fatal(err)
+ }
+
+ if pi2.ID != pi.ID {
+ t.Fatal("ids didnt match after marshal")
+ }
+
+ if !pi.Addrs[0].Equal(pi2.Addrs[0]) {
+ t.Fatal("wrong addrs")
+ }
+
+ if !pi.Addrs[1].Equal(pi2.Addrs[1]) {
+ t.Fatal("wrong addrs")
+ }
+
+ lgbl := pi2.Loggable()
+ if lgbl["peerID"] != id.Pretty() {
+ t.Fatal("loggables gave wrong peerID output")
+ }
+}
+
func TestP2pAddrParsing(t *testing.T) {
id, err := peer.IDB58Decode("QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ")
if err != nil {
