@@ -10,6 +10,8 @@ import (
1010 "github.com/stretchr/testify/require"
1111
1212 ma "github.com/multiformats/go-multiaddr"
13+ "github.com/multiformats/go-multiaddr/matest"
14+ manet "github.com/multiformats/go-multiaddr/net"
1315)
1416
1517func genKeyAndID (t * testing.T ) (crypto.PrivKey , peer.ID ) {
@@ -28,26 +30,49 @@ func TestMakeReservationWithP2PAddrs(t *testing.T) {
2830 _ , otherID := genKeyAndID (t )
2931 _ , reserverID := genKeyAndID (t )
3032
31- addrs := []ma.Multiaddr {
32- ma .StringCast ("/ip4/1.2.3.4/tcp/1234" ), // No p2p part
33- ma .StringCast ("/ip4/1.2.3.4/tcp/1235/p2p/" + selfID .String ()), // Already has p2p part
34- ma .StringCast ("/ip4/1.2.3.4/tcp/1236/p2p/" + otherID .String ()), // Some other peer (?? Not expected, but we could get anything in this func)
35- }
36-
37- rsvp := makeReservationMsg (selfKey , selfID , addrs , reserverID , time .Now ().Add (time .Minute ))
38- require .NotNil (t , rsvp )
33+ tcs := []struct {
34+ name string
35+ filter func (ma.Multiaddr ) bool
36+ input []ma.Multiaddr
37+ expected []ma.Multiaddr
38+ }{{
39+ name : "only public" ,
40+ filter : manet .IsPublicAddr ,
41+ input : []ma.Multiaddr {
42+ ma .StringCast ("/ip4/1.2.3.4/tcp/1234" ), // No p2p part
43+ ma .StringCast ("/ip4/1.2.3.4/tcp/1235/p2p/" + selfID .String ()), // Already has p2p part
44+ ma .StringCast ("/ip4/192.168.1.9/tcp/1235/p2p/" + selfID .String ()), // Already has p2p part
45+ ma .StringCast ("/ip4/1.2.3.4/tcp/1236/p2p/" + otherID .String ()), // Some other peer (?? Not expected, but we could get anything in this func)
46+ },
47+ expected : []ma.Multiaddr {
48+ ma .StringCast ("/ip4/1.2.3.4/tcp/1234/p2p/" + selfID .String ()),
49+ ma .StringCast ("/ip4/1.2.3.4/tcp/1235/p2p/" + selfID .String ()),
50+ },
51+ }, {
52+ name : "only not public" ,
53+ filter : func (m ma.Multiaddr ) bool { return ! manet .IsPublicAddr (m ) },
54+ input : []ma.Multiaddr {
55+ ma .StringCast ("/ip4/1.2.3.4/tcp/1234" ), // No p2p part
56+ ma .StringCast ("/ip4/1.2.3.4/tcp/1235/p2p/" + selfID .String ()), // Already has p2p part
57+ ma .StringCast ("/ip4/192.168.1.9/tcp/1235/p2p/" + selfID .String ()), // Already has p2p part
58+ ma .StringCast ("/ip4/1.2.3.4/tcp/1236/p2p/" + otherID .String ()), // Some other peer (?? Not expected, but we could get anything in this func)
59+ },
60+ expected : []ma.Multiaddr {
61+ ma .StringCast ("/ip4/192.168.1.9/tcp/1235/p2p/" + selfID .String ()),
62+ },
63+ }}
64+ for _ , tc := range tcs {
65+ t .Run (tc .name , func (t * testing.T ) {
66+ rsvp := makeReservationMsg (tc .filter , selfKey , selfID , tc .input , reserverID , time .Now ().Add (time .Minute ))
67+ require .NotNil (t , rsvp )
3968
40- expectedAddrs := []string {
41- "/ip4/1.2.3.4/tcp/1234/p2p/" + selfID .String (),
42- "/ip4/1.2.3.4/tcp/1235/p2p/" + selfID .String (),
69+ addrsFromRsvp := make ([]ma.Multiaddr , 0 , len (rsvp .GetAddrs ()))
70+ for _ , addr := range rsvp .GetAddrs () {
71+ a , err := ma .NewMultiaddrBytes (addr )
72+ require .NoError (t , err )
73+ addrsFromRsvp = append (addrsFromRsvp , a )
74+ }
75+ matest .AssertEqualMultiaddrs (t , tc .expected , addrsFromRsvp )
76+ })
4377 }
44-
45- addrsFromRsvp := make ([]string , 0 , len (rsvp .GetAddrs ()))
46- for _ , addr := range rsvp .GetAddrs () {
47- a , err := ma .NewMultiaddrBytes (addr )
48- require .NoError (t , err )
49- addrsFromRsvp = append (addrsFromRsvp , a .String ())
50- }
51-
52- require .Equal (t , expectedAddrs , addrsFromRsvp )
5378}
0 commit comments