diff --git a/channeldb/addr_test.go b/channeldb/addr_test.go index 2de179d6b..d093bb3d7 100644 --- a/channeldb/addr_test.go +++ b/channeldb/addr_test.go @@ -8,34 +8,59 @@ import ( "github.com/lightningnetwork/lnd/tor" ) +type unknownAddrType struct{} + +func (_ unknownAddrType) Network() string { return "unknown" } +func (_ unknownAddrType) String() string { return "unknown" } + +var addrTests = []struct { + expAddr net.Addr + serErr error +}{ + { + expAddr: &net.TCPAddr{ + IP: net.ParseIP("192.168.1.1"), + Port: 12345, + }, + }, + { + expAddr: &net.TCPAddr{ + IP: net.ParseIP("2001:0db8:0000:0000:0000:ff00:0042:8329"), + Port: 65535, + }, + }, + { + expAddr: &tor.OnionAddr{ + OnionService: "3g2upl4pq6kufc4m.onion", + Port: 9735, + }, + }, + { + expAddr: &tor.OnionAddr{ + OnionService: "vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion", + Port: 80, + }, + }, + { + expAddr: unknownAddrType{}, + serErr: ErrUnknownAddressType, + }, +} + // TestAddrSerialization tests that the serialization method used by channeldb // for net.Addr's works as intended. func TestAddrSerialization(t *testing.T) { t.Parallel() - testAddrs := []net.Addr{ - &net.TCPAddr{ - IP: net.ParseIP("192.168.1.1"), - Port: 12345, - }, - &net.TCPAddr{ - IP: net.ParseIP("2001:0db8:0000:0000:0000:ff00:0042:8329"), - Port: 65535, - }, - &tor.OnionAddr{ - OnionService: "3g2upl4pq6kufc4m.onion", - Port: 9735, - }, - &tor.OnionAddr{ - OnionService: "vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion", - Port: 80, - }, - } - var b bytes.Buffer - for _, expectedAddr := range testAddrs { - if err := serializeAddr(&b, expectedAddr); err != nil { - t.Fatalf("unable to serialize address: %v", err) + for _, test := range addrTests { + err := serializeAddr(&b, test.expAddr) + if err != test.serErr { + t.Fatalf("unexpected serialization err for addr %v, "+ + "want: %v, got %v", + test.expAddr, test.serErr, err) + } else if test.serErr != nil { + continue } addr, err := deserializeAddr(&b) @@ -43,9 +68,9 @@ func TestAddrSerialization(t *testing.T) { t.Fatalf("unable to deserialize address: %v", err) } - if addr.String() != expectedAddr.String() { + if addr.String() != test.expAddr.String() { t.Fatalf("expected address %v after serialization, "+ - "got %v", addr, expectedAddr) + "got %v", addr, test.expAddr) } } }