lnwallet: add test case to exercise MayAddOutgoingHtlc bug

As is, if the remote party proposes a min HTLC of 0 `mSat` to us, then
we won't ever be able to _send outgoing_ in the channel as the
`MayAddOutgoingHtlc` will attempt to add a zero-value HTLC, which isn't
allowed within the protocol.

The default channels created actually already use a min HTLC value of
zero within the tests, so this test case fails as is.
This commit is contained in:
Olaoluwa Osuntokun 2021-07-06 16:35:04 -07:00
parent 756a0ab392
commit 49b18b4d35
No known key found for this signature in database
GPG Key ID: 3BBD59E99B280306

@ -9648,3 +9648,24 @@ func TestChannelSignedAckRegression(t *testing.T) {
err = aliceChannel.ReceiveNewCommitment(bobSig, bobHtlcSigs)
require.NoError(t, err)
}
// TestMayAddOutgoingHtlcZeroValue tests that if the minHTLC value of the
// channel is zero, then the MayAddOutgoingHtlc doesn't exit early due to
// running into a zero valued HTLC.
func TestMayAddOutgoingHtlcZeroValue(t *testing.T) {
t.Parallel()
// The default channel created as a part of the test fixture already
// has a MinHTLC value of zero, so we don't need to do anything here
// other than create it.
aliceChannel, bobChannel, cleanUp, err := CreateTestChannels(
channeldb.SingleFunderTweaklessBit,
)
require.NoError(t, err)
defer cleanUp()
// The channels start out with a 50/50 balance, so both sides should be
// able to add an outgoing HTLC.
require.NoError(t, aliceChannel.MayAddOutgoingHtlc())
require.NoError(t, bobChannel.MayAddOutgoingHtlc())
}