lnd.xprv/lnwire/channel_announcement_test.go
Olaoluwa Osuntokun 78ce39692e
lnwire: remove channel graph announcement validation tests
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.
2016-12-27 16:43:48 -08:00

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)
}
}