From e61d971ce48c8506584fc4124f2be1967a3a24fe Mon Sep 17 00:00:00 2001 From: MPins Date: Tue, 24 Jun 2025 17:53:11 -0300 Subject: [PATCH] zpay32: test case for empty routing hints on r fields --- zpay32/invoice_internal_test.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/zpay32/invoice_internal_test.go b/zpay32/invoice_internal_test.go index a9fed9bc8..0a41b4c4d 100644 --- a/zpay32/invoice_internal_test.go +++ b/zpay32/invoice_internal_test.go @@ -697,18 +697,22 @@ func TestParseRouteHint(t *testing.T) { testDoubleHopData, _ = bech32.ConvertBits(testDoubleHopData, 8, 5, true) tests := []struct { - data []byte - valid bool - result []HopHint + data []byte + valid bool + result []HopHint + expectedErr error }{ { - data: []byte{0x0, 0x0, 0x0, 0x0}, - valid: false, // data too short, not multiple of 51 bytes + data: []byte{0x0, 0x0, 0x0, 0x0}, + // data too short, not multiple of 51 bytes + valid: false, + expectedErr: ErrLengthNotMultipleOfHopHint, }, { - data: []byte{}, - valid: true, - result: []HopHint{}, + data: []byte{}, + valid: false, + result: []HopHint{}, + expectedErr: ErrEmptyRouteHint, }, { data: testSingleHopData, @@ -716,8 +720,11 @@ func TestParseRouteHint(t *testing.T) { result: testSingleHop, }, { - data: append(testSingleHopData, 0x0), - valid: false, // data too long, not multiple of 51 bytes + data: append(testSingleHopData, + []byte{0x0, 0x0}...), + // data too long, not multiple of 51 bytes + valid: false, + expectedErr: ErrLengthNotMultipleOfHopHint, }, { data: testDoubleHopData, @@ -732,6 +739,7 @@ func TestParseRouteHint(t *testing.T) { t.Errorf("routing info decoding test %d failed: %v", i, err) return } + require.ErrorIs(t, err, test.expectedErr) if test.valid { if err := compareRouteHints(test.result, routeHint); err != nil { t.Fatalf("test %d failed decoding routing info: %v", i, err)