github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/util/ipfsaddr/ipfsaddr_test.go (about) 1 package ipfsaddr 2 3 import ( 4 "strings" 5 "testing" 6 7 ma "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multiaddr" 8 peer "github.com/ipfs/go-ipfs/p2p/peer" 9 ) 10 11 var good = []string{ 12 "/ipfs/5dru6bJPUM1B7N69528u49DJiWZnok", 13 "/ipfs/kTRX47RthhwNzWdi6ggwqjuX", 14 "/ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR", 15 "/ip4/1.2.3.4/tcp/1234/ipfs/5dru6bJPUM1B7N69528u49DJiWZnok", 16 "/ip4/1.2.3.4/tcp/1234/ipfs/kTRX47RthhwNzWdi6ggwqjuX", 17 "/ip4/1.2.3.4/tcp/1234/ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR", 18 } 19 20 var bad = []string{ 21 "5dru6bJPUM1B7N69528u49DJiWZnok", // bad ma 22 "kTRX47RthhwNzWdi6ggwqjuX", // bad ma 23 "QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR", // bad ma 24 "ipfs/5dru6bJPUM1B7N69528u49DJiWZnok", // bad ma 25 "ipfs/kTRX47RthhwNzWdi6ggwqjuX", // bad ma 26 "ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR", // bad ma 27 "/ipfs/5dru6bJPUM1B7N69528u49DJiWZno", // bad mh 28 "/ipfs/kTRX47RthhwNzWdi6ggwqju", // bad mh 29 "/ipfs/QmUCseQWXCSrhf9edzVKTvj8o8Ts5aXFGNPameZRPJ6uR", // bad mh 30 "/ipfs/QmUCseQWXCSrhf9edzVKTvoj8o8Ts5aXFGNPameZRPJ6uR/tcp/1234", // ipfs not last 31 "/ip4/1.2.3.4/tcp/ipfs/5dru6bJPUM1B7N69528u49DJiWZnok", // bad tcp part 32 "/ip4/tcp/1234/ipfs/kTRX47RthhwNzWdi6ggwqjuX", // bad ip part 33 "/ip4/1.2.3.4/tcp/1234/ipfs", // no id 34 "/ip4/1.2.3.4/tcp/1234/ipfs/", // no id 35 } 36 37 func newMultiaddr(t *testing.T, s string) ma.Multiaddr { 38 maddr, err := ma.NewMultiaddr(s) 39 if err != nil { 40 t.Fatal(err) 41 } 42 return maddr 43 } 44 45 func TestParseStringGood(t *testing.T) { 46 for _, g := range good { 47 if _, err := ParseString(g); err != nil { 48 t.Error("failed to parse", g, err) 49 } 50 } 51 } 52 53 func TestParseStringBad(t *testing.T) { 54 for _, b := range bad { 55 if _, err := ParseString(b); err == nil { 56 t.Error("succeeded in parsing", b) 57 } 58 } 59 } 60 61 func TestParseMultiaddrGood(t *testing.T) { 62 for _, g := range good { 63 if _, err := ParseMultiaddr(newMultiaddr(t, g)); err != nil { 64 t.Error("failed to parse", g, err) 65 } 66 } 67 } 68 69 func TestParseMultiaddrBad(t *testing.T) { 70 for _, b := range bad { 71 m, err := ma.NewMultiaddr(b) 72 if err != nil { 73 continue // skip these. 74 } 75 76 if _, err := ParseMultiaddr(m); err == nil { 77 t.Error("succeeded in parsing", m) 78 } 79 } 80 } 81 82 func TestIDMatches(t *testing.T) { 83 for _, g := range good { 84 a, err := ParseString(g) 85 if err != nil { 86 t.Error("failed to parse", g, err) 87 continue 88 } 89 90 sp := strings.Split(g, "/") 91 sid := sp[len(sp)-1] 92 id, err := peer.IDB58Decode(sid) 93 if err != nil { 94 t.Error("failed to parse", sid, err) 95 continue 96 } 97 98 if a.ID() != id { 99 t.Error("not equal", a.ID(), id) 100 } 101 } 102 } 103 104 func TestMultiaddrMatches(t *testing.T) { 105 for _, g := range good { 106 a, err := ParseString(g) 107 if err != nil { 108 t.Error("failed to parse", g, err) 109 continue 110 } 111 112 m := newMultiaddr(t, g) 113 if !a.Multiaddr().Equal(m) { 114 t.Error("not equal", a.Multiaddr(), m) 115 } 116 } 117 } 118 119 func TestTransport(t *testing.T) { 120 for _, g := range good { 121 a, err := ParseString(g) 122 if err != nil { 123 t.Error("failed to parse", g, err) 124 continue 125 } 126 127 m := newMultiaddr(t, g) 128 split := ma.Split(m) 129 m = ma.Join(split[:len(split)-1]...) 130 if a.Multiaddr().Equal(m) { 131 t.Error("should not be equal", a.Multiaddr(), m) 132 } 133 if !Transport(a).Equal(m) { 134 t.Error("should be equal", Transport(a), m) 135 } 136 } 137 }