e549a3f0ed
Once a channel funding process has advanced to the point of broadcasting the funding transaction, the state of the channel should be persisted so that the nodes can disconnect or go down without having to wait for the funding transaction to be confirmed on the blockchain. Previously, the finalization of the funding process was handled by a combination of the funding manager, the peer and the wallet, but if the remote peer is no longer online or no longer connected, this flow will no longer work. This commit moves all funding steps following the transaction broadcast into the funding manager, which is available as long as the daemon is running.
34 lines
869 B
Go
34 lines
869 B
Go
package lnwire
|
|
|
|
import (
|
|
"bytes"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestSingleFundingRequestWire(t *testing.T) {
|
|
// First create a new SFR message.
|
|
cdp := pubKey
|
|
delivery := PkScript(bytes.Repeat([]byte{0x02}, 25))
|
|
sfr := NewSingleFundingRequest(20, 21, 22, 23, 5, 5, cdp, cdp,
|
|
delivery, 540, 10000, 6)
|
|
|
|
// Next encode the SFR message into an empty bytes buffer.
|
|
var b bytes.Buffer
|
|
if err := sfr.Encode(&b, 0); err != nil {
|
|
t.Fatalf("unable to encode SingleFundingSignComplete: %v", err)
|
|
}
|
|
|
|
// Deserialize the encoded SFR message into a new empty struct.
|
|
sfr2 := &SingleFundingRequest{}
|
|
if err := sfr2.Decode(&b, 0); err != nil {
|
|
t.Fatalf("unable to decode SingleFundingRequest: %v", err)
|
|
}
|
|
|
|
// Assert equality of the two instances.
|
|
if !reflect.DeepEqual(sfr, sfr2) {
|
|
t.Fatalf("encode/decode error messages don't match %#v vs %#v",
|
|
sfr, sfr2)
|
|
}
|
|
}
|