78ce39692e
This commit removes the previous test cases which excised the proper validation of graph announcements on the network. As full generation of the authenticated messages has not yet been implemented, these tests aren’t currently applicable. In a future commit, these tests will be replicated on the new discovery package which will handle producing the channel proofs and also fully validating them.
92 lines
2.5 KiB
Go
92 lines
2.5 KiB
Go
package lnwire
|
|
|
|
import (
|
|
"bytes"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/roasbeef/btcd/btcec"
|
|
"github.com/roasbeef/btcd/wire"
|
|
)
|
|
|
|
func TestChannelAnnoucementEncodeDecode(t *testing.T) {
|
|
ca := &ChannelAnnouncement{
|
|
FirstNodeSig: someSig,
|
|
SecondNodeSig: someSig,
|
|
ChannelID: someChannelID,
|
|
FirstBitcoinSig: someSig,
|
|
SecondBitcoinSig: someSig,
|
|
FirstNodeID: pubKey,
|
|
SecondNodeID: pubKey,
|
|
FirstBitcoinKey: pubKey,
|
|
SecondBitcoinKey: pubKey,
|
|
}
|
|
|
|
// Next encode the CA message into an empty bytes buffer.
|
|
var b bytes.Buffer
|
|
if err := ca.Encode(&b, 0); err != nil {
|
|
t.Fatalf("unable to encode ChannelAnnouncement: %v", err)
|
|
}
|
|
|
|
// Ensure the max payload estimate is correct.
|
|
serializedLength := uint32(b.Len())
|
|
if serializedLength != ca.MaxPayloadLength(0) {
|
|
t.Fatalf("payload length estimate is incorrect: expected %v "+
|
|
"got %v", serializedLength, ca.MaxPayloadLength(0))
|
|
}
|
|
|
|
// Deserialize the encoded CA message into a new empty struct.
|
|
ca2 := &ChannelAnnouncement{}
|
|
if err := ca2.Decode(&b, 0); err != nil {
|
|
t.Fatalf("unable to decode ChannelAnnouncement: %v", err)
|
|
}
|
|
|
|
// Assert equality of the two instances.
|
|
if !reflect.DeepEqual(ca, ca2) {
|
|
t.Fatalf("encode/decode error messages don't match %#v vs %#v",
|
|
ca, ca2)
|
|
}
|
|
}
|
|
|
|
func TestChannelAnnoucementValidation(t *testing.T) {
|
|
getKeys := func(s string) (*btcec.PrivateKey, *btcec.PublicKey) {
|
|
return btcec.PrivKeyFromBytes(btcec.S256(), []byte(s))
|
|
}
|
|
|
|
firstNodePrivKey, firstNodePubKey := getKeys("node-id-1")
|
|
secondNodePrivKey, secondNodePubKey := getKeys("node-id-2")
|
|
firstBitcoinPrivKey, firstBitcoinPubKey := getKeys("bitcoin-key-1")
|
|
secondBitcoinPrivKey, secondBitcoinPubKey := getKeys("bitcoin-key-2")
|
|
|
|
var hash []byte
|
|
|
|
hash = wire.DoubleSha256(firstNodePubKey.SerializeCompressed())
|
|
firstBitcoinSig, _ := firstBitcoinPrivKey.Sign(hash)
|
|
|
|
hash = wire.DoubleSha256(secondNodePubKey.SerializeCompressed())
|
|
secondBitcoinSig, _ := secondBitcoinPrivKey.Sign(hash)
|
|
|
|
ca := &ChannelAnnouncement{
|
|
ChannelID: someChannelID,
|
|
FirstBitcoinSig: firstBitcoinSig,
|
|
SecondBitcoinSig: secondBitcoinSig,
|
|
FirstNodeID: firstNodePubKey,
|
|
SecondNodeID: secondNodePubKey,
|
|
FirstBitcoinKey: firstBitcoinPubKey,
|
|
SecondBitcoinKey: secondBitcoinPubKey,
|
|
}
|
|
|
|
dataToSign, _ := ca.DataToSign()
|
|
hash = wire.DoubleSha256(dataToSign)
|
|
|
|
firstNodeSign, _ := firstNodePrivKey.Sign(hash)
|
|
ca.FirstNodeSig = firstNodeSign
|
|
|
|
secondNodeSign, _ := secondNodePrivKey.Sign(hash)
|
|
ca.SecondNodeSig = secondNodeSign
|
|
|
|
if err := ca.Validate(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|