github.com/decred/dcrlnd@v0.7.6/lnwire/accept_channel_test.go (about)

     1  package lnwire
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  
     7  	"github.com/decred/dcrd/dcrec/secp256k1/v4"
     8  )
     9  
    10  // TestDecodeAcceptChannel tests decoding of an accept channel wire message with
    11  // and without the optional upfront shutdown script.
    12  func TestDecodeAcceptChannel(t *testing.T) {
    13  	tests := []struct {
    14  		name           string
    15  		shutdownScript DeliveryAddress
    16  	}{
    17  		{
    18  			name:           "no upfront shutdown script",
    19  			shutdownScript: nil,
    20  		},
    21  		{
    22  			name:           "empty byte array",
    23  			shutdownScript: []byte{},
    24  		},
    25  		{
    26  			name:           "upfront shutdown script set",
    27  			shutdownScript: []byte("example"),
    28  		},
    29  	}
    30  
    31  	for _, test := range tests {
    32  		test := test
    33  
    34  		t.Run(test.name, func(t *testing.T) {
    35  			priv, err := secp256k1.GeneratePrivateKey()
    36  			if err != nil {
    37  				t.Fatalf("cannot create privkey: %v", err)
    38  			}
    39  			pk := priv.PubKey()
    40  
    41  			encoded := &AcceptChannel{
    42  				PendingChannelID:      [32]byte{},
    43  				FundingKey:            pk,
    44  				RevocationPoint:       pk,
    45  				PaymentPoint:          pk,
    46  				DelayedPaymentPoint:   pk,
    47  				HtlcPoint:             pk,
    48  				FirstCommitmentPoint:  pk,
    49  				UpfrontShutdownScript: test.shutdownScript,
    50  			}
    51  
    52  			buf := &bytes.Buffer{}
    53  			if _, err := WriteMessage(buf, encoded, 0); err != nil {
    54  				t.Fatalf("cannot write message: %v", err)
    55  			}
    56  
    57  			msg, err := ReadMessage(buf, 0)
    58  			if err != nil {
    59  				t.Fatalf("cannot read message: %v", err)
    60  			}
    61  
    62  			decoded := msg.(*AcceptChannel)
    63  			if !bytes.Equal(
    64  				decoded.UpfrontShutdownScript, encoded.UpfrontShutdownScript,
    65  			) {
    66  				t.Fatalf("decoded script: %x does not equal encoded script: %x",
    67  					decoded.UpfrontShutdownScript, encoded.UpfrontShutdownScript)
    68  			}
    69  		})
    70  	}
    71  }