Skip to content

Commit 483e1b2

Browse files
committed
routing/route: add tests for Vertex TLV encode/decode and invalid length
1 parent 50271ec commit 483e1b2

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

routing/route/route_test.go

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

0 commit comments

Comments
 (0)