Skip to content

Commit e528641

Browse files
committed
routing/route: add tests for Vertex TLV encode/decode and invalid length
1 parent 74fa3e8 commit e528641

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

routing/route/route_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/btcsuite/btcd/btcec/v2"
99
"github.com/lightningnetwork/lnd/lnwire"
1010
"github.com/lightningnetwork/lnd/record"
11+
"github.com/lightningnetwork/lnd/tlv"
1112
"github.com/stretchr/testify/require"
1213
)
1314

@@ -430,3 +431,53 @@ func TestBlindedHopFee(t *testing.T) {
430431
require.Equal(t, lnwire.MilliSatoshi(0), route.HopFee(3))
431432
require.Equal(t, lnwire.MilliSatoshi(0), route.HopFee(4))
432433
}
434+
435+
func makeVertex() Vertex {
436+
var v Vertex
437+
for i := range VertexSize {
438+
v[i] = byte(i)
439+
}
440+
441+
return v
442+
}
443+
444+
// TestVertexTLVEncodeDecode tests that we're able to properly encode and decode
445+
// Vertex within TLV streams.
446+
func TestVertexTLVEncodeDecode(t *testing.T) {
447+
t.Parallel()
448+
449+
vertex := makeVertex()
450+
451+
var extraData lnwire.ExtraOpaqueData
452+
require.NoError(t, extraData.PackRecords(&vertex))
453+
454+
var vertex2 Vertex
455+
tlvs, err := extraData.ExtractRecords(&vertex2)
456+
require.NoError(t, err)
457+
458+
require.Contains(t, tlvs, tlv.Type(0))
459+
require.Equal(t, vertex, vertex2)
460+
}
461+
462+
// TestVertexTypeDecodeInvalidLength ensures that decoding a Vertex TLV
463+
// with an invalid length (anything other than 33) fails with an error.
464+
func TestVertexTypeDecodeInvalidLength(t *testing.T) {
465+
t.Parallel()
466+
467+
vertex := makeVertex()
468+
469+
var extraData lnwire.ExtraOpaqueData
470+
require.NoError(t, extraData.PackRecords(&vertex))
471+
472+
// Corrupt the TLV length field to simulate malformed input.
473+
extraData[1] = VertexSize + 1
474+
475+
var out Vertex
476+
_, err := extraData.ExtractRecords(&out)
477+
require.Error(t, err)
478+
479+
extraData[1] = VertexSize - 1
480+
481+
_, err = extraData.ExtractRecords(&out)
482+
require.Error(t, err)
483+
}

0 commit comments

Comments
 (0)